c++ 学习之路(n+3)
cstring 中 string.find() 函数
string.find()函数用于寻找string中是否包含这个字符或字符串。如:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
stirng name = "da la ben ba";
string cont = "ben";
// find "ben" in name from the first char
string::size_type ind = name.find(cont,0);
// 6
cout << ind << endl;
return 0;
}
其返回值为输入字符或字符串首字符出现的位置的索引值。
std::npos
string::npos 中对npos的定义为 static const size_type npos = -1
如果直接比较str1.find(str2) 与0的大小,可能会出现错误。
如:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
// your code goes here
string name = "da la ben ba";
// 18446744073709551615
cout << name.find("f") << endl;
// "f" is in this string
if(name.find("f") < 0)
cout << "f is not in this string" <<endl;
else
cout << "f is in this string" << endl;
// "f" is not in this string
if(name.find("f") == string::npos)
cout << "f is not in this string" <<endl;
else
cout << "f is in this string" << endl;
return 0;
}
从这里可以看出直接用0进行比较是不可行的,必须用到string::npos