标签:string npos stringnops
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; } }
tmpname.replace(idx+1, string::npos, suffix);
#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
string::npos的一些说明,布布扣,bubuko.com
标签:string npos stringnops
原文地址:http://blog.csdn.net/devil_pull/article/details/25478525