string:
来源:互联网 发布:《网络黑白》 编辑:程序博客网 时间:2024/05/17 17:18
string::npos 的一些说明
一、定义
std:: string ::npos的定义:
static const size_t npos = -1;
表示 size_t 的最大值( Maximum value for size_t ) ,如果对 -1 表示size_t的最大值有疑问可以采用如下代码验证:
#include <iostream>#include <limits>#include <string>using namespace std;int main(){ size_t npos = -1; cout << "npos: " << npos << endl; cout << "size_t max: " << numeric_limits<size_t>::max() << endl;}
在我的PC上执行结果为:
npos: 4294967295
size_t max: 4294967295
可见他们是相等的,也就是说npos表示size_t的最大值
二、使用2.1 如果作为一个 返回值 (return value) 表示没有找到匹配项 ,例如:
#include <iostream>#include <limits>#include <string>using namespace std;int main(){ string filename = "test"; cout << "filename : " << filename << endl; size_t idx = filename.find('.'); //作为return value,表示没有匹配项 if(idx == string::npos) { cout << "filename does not contain any period!" << endl; }}2.2 但是string::npos作为string的成员函数的一个 长度参数 时,表示“ 直到字符串结束(until the end of the string)”。例如:
tmpname.replace(idx+1, string::npos, suffix);
这里的string::npos就是一个长度参数,表示直到字符串的结束,配合idx+1表示,string的剩余部分。
#include <iostream>#include <limits>#include <string>using namespace std;int main(){ string filename = "test.cpp"; cout << "filename : " << filename << endl; size_t idx = filename.find('.'); //as a return value if(idx == string::npos) { cout << "filename does not contain any period!" << endl; } else { string tmpname = filename; tmpname.replace(idx + 1, string::npos, "xxx"); //string::npos作为长度参数,表示直到字符串结束 cout << "repalce: " << tmpname << endl; }}
执行结果为:
filename:test.cpp
replace: test.xxx
0 0
- string
- String
- String
- string
- string
- String
- string
- String
- string
- string
- string
- string
- String
- String
- string
- string +
- String
- String
- day15总结(1. toString()、equals()方法 2. String、StringBuilder常用方法)
- MySQL主从复制
- SSH5
- 关于协程的初步理解
- SSH6
- string:
- sql文件导入mysql数据库
- 51nod - 1573 分解 - 矩阵快速幂
- linux文件目录操作命令 head
- 从ssh来看面向对象的五大原则
- JAVA IO常用总结
- Java实现简单的AOP(一)
- Tomcat源码阅读之Cookie和Session
- centOS安装jdk