string字符串之size_type

std::string::size_type

size_type是容器概念,没有容器不能使用。
由string类型和vector类型定义的类型,用以保存任意string对象或者vector对象的长度,标准库类型将size_type定义为unsigned类型

string抽象意义是字符串,size()的抽象意义是字符串的尺寸,string::size_type抽象意义是尺寸单位类型

string::size_type表示在不同的机器上,长度是可以不同的,并非固定的长度。使用此类型,可以使程序适合这个机器,与实际机器匹配。

string::size_type从本质上来说,是一个整型数。关键是由于机器的环境,它的长度有可能不同。

我们在使用string::find函数的时候,它返回的类型就是string::size_type类型。而当find找不到要找的字符的时候,它
返回的是npos的值,这个值是与size_type相关的。

eg:

        string  s
        int rc = s.find(.....); 
        if ( rc ==string::npos ) 

   //  这样在不同的机器平台上表现就不一样了

你的平台的string::size_type的长度正好和int相匹配,那么这个判断会侥幸正确。
但换成另外的平台,有可能 string::size_type的类型
是64位长度的,那么判断就完全不正确了。 所以,正确的应该是: string::size_type rc = s.find(.....);
这个时候使用 if ( rc == string::npos )就会正确了

st.size()表示st中字符数量,字符数量的统计是由1开始累计计算的,所以字符数量正好比字符串的下标索引数(由0开始累计计算)大1
这里的index!=st.size() 效果等同于 index < st.size();

原文链接:https://blog.csdn.net/hankern/article/details/90572592

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