string的find函数返回值和string::npos
先看一种很多人日常使用错误方式
string str(“hello world”);
int pos=str.find_first_of(“h”);
if(pos!=string::npos) // 或者 if(pos!=-1)
{…
…// 查找到了
} //不存在是find返回-1
这样的使用,结果是正常的,但并没有很好的理解string find函数的返回类型和string::npos真正的值。
string::find这类型的函数,返回值类型都是string::size_type, 而string::size_type其实是一种unsigned int类型。
find的结果记录匹配的位置,或者返回一个名为string::npos 的特殊值,说明查找没有匹配。
string 类将 npos 定义为保证大于任何有效下标的值。string::npos的值是无符号型类型的,其值是(unsigned int)(-1),也就是4294967295
所以正确的用法应该是:
string str(“hello world”);
string::size pos=str.find_first_of(“h”);
if(pos!=string::npos)
{…
…// 查找到了
} //不存在是find返回string::npos
由上面可以看出,string::npos的值是-1并不准确,string::npos的值是无符号型类型的,其值是(unsigned int)(-1),也就是4294967295,但是和int 类型的-1比较结果是true,所以使用的时候,认为其值是int类型的-1不会影响结果.
string的find函数返回值和string::npos相关推荐
- C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)
先看以下代码 #include <iostream> #include <string> using namespace std;int main() // main() 是程 ...
- C指针7:指针作为函数返回值
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...
- 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)
2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...
- java 函数参数 返回值_java中如何用函数返回值作为post提交的参数?
1.我想实现的功能是在java程序中导入HttpURLConnection类,然后将函数的值作为post方法要提交的参数,最后显示在显示台上. 2.要用到的函数是自己写的可以显示实时计算机cpu.内存 ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )
文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...
- 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )
文章目录 一.将 两头堵模型 抽象成业务模块函数 二.完整代码示例 一.将 两头堵模型 抽象成业务模块函数 将 两头堵模型 抽象成业务模块函数 相关要点 : 形参返回值 : 函数的返回值 , 一般使用 ...
- 14. 函数返回值为引用?
函数返回值可以是引用吗? 当然可以,只是在函数返回引用的时候需要注意几点.以下给出讨论! 函数在返回值的时候,会产生一个临时变量作为函数返回值的副本:而函数在返回引用的时候,不会产生副本!那么既然是引 ...
- C语言指针作为函数返回值
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...
最新文章
- 2022-2028年中国光掩膜行业市场行情监测及未来前景规划报告
- 开始Hibernate介绍
- 32位汇编语言条件伪指令和win32汇编关于windows.inc的error A2004
- 百分点大数据技术团队:乘风破浪 海外数据中台项目实践
- 16_clickhouse,HDFS引擎,JDBC引擎
- Java 匿名内部类理解
- VHDL-std_logic_vector转换为integer注意
- 某学校有计算机主机1300台,网络互联技术与实践第14章:构建基于静态路由的多层网络.ppt...
- 配置交换空间与文件系统的备份
- 小程序抽象组件使用示例
- php_connect_nonb,net2ftp无法显示文件列表输出为空
- java中如何直接导入println()
- 深入理解Java枚举类型(enum)
- 人人都应该掌握的一些电脑操作技巧
- 曲线与曲面的切线法线等等等
- process has died
- Pycharm导入tabula模块包
- 声音处理用什么软件?3款软件让你的作品出圈!
- 人生之路小游戏代码2
- mysql查询是否走索引_探索MySQL是否走索引(一)——范围查询一定走索引吗?
热门文章
- 第二人生(Second Life)
- vue使用element中的el-date-picker实现每月的第几周
- 单击单元格实现可编辑的表格(学号和姓名下)
- 软件测试顺序图写测试用例,基于UML顺序图的场景测试用例生成方法
- Qt 通讯模块(短信、彩信发送)
- 《Head First Java》读后笔记
- 出现你的pin不可用,单击以重新设置pin
- 创龙基于TI TMS320C6748定点/浮点DSP C674x开发板的BOOT SET启动选择开关、Micro SD卡接口
- pythonsuper多重继承_python多重继承实例 python多重继承下super问题
- 微信小程序 view样式