先看一种很多人日常使用错误方式

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相关推荐

  1. C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)

    先看以下代码 #include <iostream> #include <string> using namespace std;int main() // main() 是程 ...

  2. C指针7:指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...

  3. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  4. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例

    C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...

  5. java 函数参数 返回值_java中如何用函数返回值作为post提交的参数?

    1.我想实现的功能是在java程序中导入HttpURLConnection类,然后将函数的值作为post方法要提交的参数,最后显示在显示台上. 2.要用到的函数是自己写的可以显示实时计算机cpu.内存 ...

  6. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

  7. 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )

    文章目录 一.将 两头堵模型 抽象成业务模块函数 二.完整代码示例 一.将 两头堵模型 抽象成业务模块函数 将 两头堵模型 抽象成业务模块函数 相关要点 : 形参返回值 : 函数的返回值 , 一般使用 ...

  8. 14. 函数返回值为引用?

    函数返回值可以是引用吗? 当然可以,只是在函数返回引用的时候需要注意几点.以下给出讨论! 函数在返回值的时候,会产生一个临时变量作为函数返回值的副本:而函数在返回引用的时候,不会产生副本!那么既然是引 ...

  9. C语言指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...

最新文章

  1. 2022-2028年中国光掩膜行业市场行情监测及未来前景规划报告
  2. 开始Hibernate介绍
  3. 32位汇编语言条件伪指令和win32汇编关于windows.inc的error A2004
  4. 百分点大数据技术团队:乘风破浪 海外数据中台项目实践
  5. 16_clickhouse,HDFS引擎,JDBC引擎
  6. Java 匿名内部类理解
  7. VHDL-std_logic_vector转换为integer注意
  8. 某学校有计算机主机1300台,网络互联技术与实践第14章:构建基于静态路由的多层网络.ppt...
  9. 配置交换空间与文件系统的备份
  10. 小程序抽象组件使用示例
  11. php_connect_nonb,net2ftp无法显示文件列表输出为空
  12. java中如何直接导入println()
  13. 深入理解Java枚举类型(enum)
  14. 人人都应该掌握的一些电脑操作技巧
  15. 曲线与曲面的切线法线等等等
  16. process has died
  17. Pycharm导入tabula模块包
  18. 声音处理用什么软件?3款软件让你的作品出圈!
  19. 人生之路小游戏代码2
  20. mysql查询是否走索引_探索MySQL是否走索引(一)——范围查询一定走索引吗?

热门文章

  1. 第二人生(Second Life)
  2. vue使用element中的el-date-picker实现每月的第几周
  3. 单击单元格实现可编辑的表格(学号和姓名下)
  4. 软件测试顺序图写测试用例,基于UML顺序图的场景测试用例生成方法
  5. Qt 通讯模块(短信、彩信发送)
  6. 《Head First Java》读后笔记
  7. 出现你的pin不可用,单击以重新设置pin
  8. 创龙基于TI TMS320C6748定点/浮点DSP C674x开发板的BOOT SET启动选择开关、Micro SD卡接口
  9. pythonsuper多重继承_python多重继承实例 python多重继承下super问题
  10. 微信小程序 view样式