C++中的npos,size_t,size_type】的更多相关文章

string类提供了6种查找函数,每种函数以不同形式find命名,这些操作全都返回string::size_type类型的值,以下标形式标记查找匹配所发生的位置,或返回一个名为string::npos的特殊值,说明查找没有匹配,string类将npos定义为保证大于任何有效下标的值 简言之:当值与npos相等时,说明没有找到,两者比较不等时,说明找到了. npos表示大于任何有效下标值,可以用string::npos作为string的成员函数的一个长度参数,表示直到字符串结束. 这里的strin…
size_type 类型 从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或如 2.2 节“建议”中所述的无符号整数.但事实上,size 操作返回的是 string::size_type 类型的值.我们需要对这种类型做一些解释. string 类类型和许多其他库类型都定义了一些配套类型(companion type).通过这些配套类型,库类型的使用就能与机器无关(machine-independent).size_type 就是这些配套类型中的一种.它定义为与 unsigned 型(u…
查找字符串a是否包含子串b,不是用strA.find(strB) > 0而是strA.find(strB) != string:nposstring::size_type pos = strA.find(strB);if(pos != string::npos){}-------------------------------------------int idx = str.find("abc");if (idx == string::npos)...上述代码中,idx的类型被…
先说说string::npos参数: npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西.取值由实现决定,一般是-1,这样做,就不会存在移植的问题了. 再来说说find函数: find函数的返回值是整数,假如字符串存在包含关系,其返回值必定不等于npos,但如果字符串不存在包含关系,那么返回值就一定是npos.所以不难想到用if判断语句来实现! 查找字符串a是否包含子串b,不是用strA.find(strB)…
整理自关于size_t与size_type 问题起源于这样一段代码: #include <algorithm> #include <stdio.h> int main() { size_t indexs = -1; size_t ps = 100; int index = -1; int p = 100; printf("%d\n",std::min(p,index)); printf("%d\n",std::min(ps,indexs));…
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型:size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度 2. string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int3. 使用的时候可以参考:   string…
异同点: size_t size_type sizeof(XXX)所得到的结果的类型就是 string类类型和vector类类型定义的类型,string的size操作返回来的是string::size_type类型,不可把string::size_type赋给int. 全局定义的类型,比如用在数组中,for循环中 STL类中定义的类型属性 sizeof(string::size_type) , sizeof(size_t) //size_t单独就行上述长度均相等,长度为win32:4 win64…
在C++中,利用数组下标访问数组元素时,常常将下标类型定义为size_t类型,因为正常来说,数组的下标就是size_t类型.例如这样: for (size_t i = 0; i < container.size(); ++i) 然而具体来说,size_t是一个和机器相关的unsigned类型.重点就在于... size_t是一个unsigned类型的数值类型.因而,在C/C++中涉及到size_t和int型数据转换传递时,就需要注意... 尽管这个问题经常被老师和书籍指出来需要重视,然而今天还是…
总述:      以下所讲的所有的string查找函数,都有唯一的返回类型,那就是size_type,即一个无符号整数(按打印出来的算).若查找成功,返回按查找规则找到的第一个字符或子串的位置:若查找失败,返回npos,即-1(打印出来为4294967295). 1.fine() 原型: //string (1) size_type find () const noexcept; //c-string (2) size_type find () const; //buffer (3) size_…
int main() { string str("Hello World!\n"); cout << "The size of " << str << "is " << str.size() << " characters, including the newline" << endl; ; } 从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或…