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 " << ...
随机推荐
- Downloadftp
#!/bin/bash FILENAME=$ DSTDIR=$ FTPSRV=ip FTPUSER="user" FTPPWD="password" SRCDI ...
- servlet(1)request常用方法
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. req ...
- DOM精简版笔记
1.1. 基本概念 1.1.1. DOM DOM Document Object Model 文档对象模型 就是把HTML文档模型化,当作对象来处理 DOM提供的一系列属性和方法可以 ...
- 学JS的心路历程 -非同步执行
JS是单线程的语言,也就是说同一时间只会执行一行程序,所以如果一段程序执行过久就会造成阻塞(blocking)的现象,必须等到它结束后才能执行下一段程序. 举个例子来说,如果我们今天要买便当,但是老板 ...
- redis 启动
C:\Users\Administrator>cd c:\ c:\>cd redis-2.6 c:\redis-2.6>redis-server.exe redis.conf 测试r ...
- android显示和隐藏软键盘(转)
显示键盘: EditText editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.request ...
- Cisco & H3C 交换机 DHCP 中继
个人理解:其实在核心交换上配置dhcp 中继也就是短短的几条命令,主要是注意细节,具体配置如下,希望能帮到大家: DHCP服务器IP:192.168.1.100 CISCO: 第一步:开启交换机的dh ...
- 数位dp poj1850
题目链接:https://vjudge.net/problem/POJ-1850 这题我用的是数位dp,刚刚看了一下别人用排列组合,我脑子不行,想不出来. 在这题里面我把a看成1,其他的依次递增,如果 ...
- ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps(二分+线段树区间最小)
During tea-drinking, princess, amongst other things, asked why has such a good-natured and cute Drag ...
- TZOJ 4325 RMQ with Shifts(线段树查询最小,暴力更新)
描述 In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each que ...