C++中的npos,size_t,size_type
string类提供了6种查找函数,每种函数以不同形式find命名,这些操作全都返回string::size_type类型的值,以下标形式标记查找匹配所发生的位置,或返回一个名为string::npos的特殊值,说明查找没有匹配,string类将npos定义为保证大于任何有效下标的值
简言之:当值与npos相等时,说明没有找到,两者比较不等时,说明找到了。

npos表示大于任何有效下标值,可以用string::npos作为string的成员函数的一个长度参数,表示直到字符串结束。
这里的string::npos就是一个长度参数,表示直到字符串的结束,配合idx+1表示,string的剩余部分。

size_t和size_type:
总结:
size_t类型的命名空间是全局的命名空间,size_type是类中定义的类型属性,用以保存任意string和vecotr类对象的长度,size_type是容器概念,没有容器不能使用,size_type是一个unsigned int类型。容器中不用int来表示sizeof的原因是,int在不同的机器上长度不一样,16位的机器int值太小,不够用来表示。string类中定义有string::size_type类型,vector类中定义有vector<int>::size_type类型,后两者的定义不重复,只是命名空间不同而已。
size_t:定义在cstddef头文件中,与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小
size_type:被定义为unsigned类型,与机器无关(即在不同的机器上,长度可以是不同的,并非固定长度),同样能存储任意长度的对象大小
注意:size_type本质上来说是个整型数,sizeof的结果类型是size_t
千万注意:不要把size_t类型的数和int类型的进行大小比较,机器会把int的转化成无符号再比较,与原本想要实现的功能的本意不同了。

引自https://zhidao.baidu.com/question/485415372.html
https://blog.csdn.net/lzx_bupt/article/details/6558566
https://blog.csdn.net/jiejinquanil/article/details/51789682
https://blog.csdn.net/wallwind/article/details/6583714
C++中的npos,size_t,size_type的更多相关文章
- c++中,size_typt, size_t, ptrdiff_t 简介
size_type 类型 从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或如 2.2 节“建议”中所述的无符号整数.但事实上,size 操作返回的是 string::size_type 类 ...
- C++中string.find()函数,string.find_first_of函数与string::npos
查找字符串a是否包含子串b,不是用strA.find(strB) > 0而是strA.find(strB) != string:nposstring::size_type pos = strA. ...
- C++中string.find()函数与string::npos
先说说string::npos参数: npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西.取值由实现决定,一般是 ...
- 关于size_t与size_type
整理自关于size_t与size_type 问题起源于这样一段代码: #include <algorithm> #include <stdio.h> int main() { ...
- size和STL中的size_type
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型:size_type是STL类中定义的类型属 ...
- string::size_type 页73 size_t 页90
异同点: size_t size_type sizeof(XXX)所得到的结果的类型就是 string类类型和vector类类型定义的类型,string的size操作返回来的是string::size ...
- C/C++中size_t潜在的问题
在C++中,利用数组下标访问数组元素时,常常将下标类型定义为size_t类型,因为正常来说,数组的下标就是size_t类型.例如这样: for (size_t i = 0; i < contai ...
- C++string中用于查找的find系列函数浅析
总述: 以下所讲的所有的string查找函数,都有唯一的返回类型,那就是size_type,即一个无符号整数(按打印出来的算).若查找成功,返回按查找规则找到的第一个字符或子串的位置:若查找 ...
- C++ string::size_type 类型【转】
int main() { string str("Hello World!\n"); cout << "The size of " << ...
随机推荐
- jira-6.0.1-x64下载地址
http://downloads.atlassian.com/software/jira/downloads/atlassian-jira-6.0.1-x64.bin
- python import sklearn出错 "ImportError: DLL load failed: 找不到指定的模块。
安装好sklearn模块后,import的时候出现了以下错误: 但是确实已经装好了,百思不得其解,网上查找之后发现,出现错误原因:安装包的来源问题,也可以理解为包版本兼容问题,有的包使用官方出版,有的 ...
- Matlab练习——rpy2tr函数与自己实现的ZYX欧拉角的结果不同的问题
问题背景:在根据<机器人导论>这本书的Z-Y-X欧拉角原理用Matlab实现旋转矩阵求解时,发现与直接调用机器人工具箱中的rpy2tr()函数得出的结果并不相同. 首先:先检查自己写的函数 ...
- vue 组件中this指向
今天开始学习慕课网的“去哪网”app开发,之前用学了一段时间对vue还是没有深刻理解透,先在开始要从新开始学习vue,今天学的第一堂课是vue 中v-model.v-for的简单例子,以前改变dom中 ...
- 使用Jmeter(三十)针对ActiveMQ JMS POINT TO POINT压力测试(转载)
转载自 http://www.cnblogs.com/yangxia-test 准备工作 针对JMS类型的Sampler,需要额外的jar包(这里用的是apache ActiveMQ,将下载的AMQ ...
- sql去除重复语句
转自芙蓉清秀的BLOG http://blog.sina.com.cn/liurongxiu1211 sql去除重复语句 (2012-06-15 15:00:01) sql 单表/多表查询去除重复记 ...
- CSS float清除浮动
解决高度塌陷的问题 – 清除浮动 CSS中有个讨论较多的话题就是如何清除浮动,清除浮动其实就一个目的,就是解决高度塌陷的问题.为什么会高度塌陷?什么时候会高度塌陷?塌陷原因是:元素含有浮动属性 – 破 ...
- Windows配置Java环境
https://jingyan.baidu.com/article/84b4f56598d88b60f7da3272.html
- 斐波那契数列(python)
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 # -*- coding:utf-8 -*- class Solut ...
- 第十一章 串 (a)ADT