c++中的npos

以string类来说明

string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。这些操作全都返回 string::size_type 类型的值,以下标形式标记查找匹配所发生的位置;或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将 npos 定义为保证大于任何有效下标的值。

比如:

string ss="abaaname";
 string::size_type pos;
// pos=ss.find_first_not_of("a");  //查找ss中第一不是字符a的字符所在的下标 ,pos=1。下标从0开始到。
// pos=ss.find_first_of("a");
// pos=ss.find("a");
// pos=ss.find_last_of("a");
 pos=ss.find_last_not_of("a");
 cout<<pos<<endl;

 //npos是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type
//许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。npos表示string的结束位子,

//是string::size_type  类型的,也就是find()返回的类型。

还有vector<int>::size_type 容器类型的

 

string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。这些操作全都返回 string::size_type 类型的值,以下标形式标记查找匹配所发生的位置;或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将 npos 定义为保证大于任何有效下标的值。

比如:

string str;

pos=str.find_first_of("h");

if(pos!=string::npos)

{..

cout<<"找到了h字符"<<endl;

}

你可能感兴趣的:(C++,npos)