在C++中,std::string
类有一个非常有用的成员函数叫做find
,它可以在字符串中查找子字符串的位置。如果找到了子字符串,find
函数会返回子字符串第一次出现的位置的索引;如果没有找到子字符串,find
函数会返回std::string::npos
。
以下是一个使用std::string::find
函数的示例代码:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::string sub = "world";
size_t pos = str.find(sub);
if (pos != std::string::npos) {
std::cout << "Found '" << sub << "' at position " << pos << std::endl;
} else {
std::cout << "'" << sub << "' not found" << std::endl;
}
return 0;
}
在这个示例中,我们在字符串"Hello, world!"
中查找子字符串"world"
,并使用std::string::find
函数找到它的位置。然后,我们输出子字符串的位置。
需要注意的是,std::string::find
函数是区分大小写的。如果你想进行不区分大小写的查找,可以在查找之前将字符串和子字符串都转换为小写(或大写):
#include <algorithm>
#include <cctype>
// ...
size_t pos = str.find(sub);
if (pos != std::string::npos) {
std::cout << "Found '" << sub << "' at position " << pos << std::endl;
} else {
std::cout << "'" << sub << "' not found" << std::endl;
}
// Convert both strings to lowercase to perform case-insensitive search
transform(str.begin(), str.end(), str.begin(), ::tolower);
transform(sub.begin(), sub.end(), sub.begin(), ::tolower);
pos = str.find(sub);
if (pos != std::string::npos) {
std::cout << "Found '" << sub << "' at position " << pos << std::endl;
} else {
std::cout << "'" << sub << "' not found" << std::endl;
}
在这个修改后的示例中,我们使用std::transform
函数和::tolower
函数将字符串和子字符串都转换为小写,然后再次使用std::string::find
函数进行查找。这样就可以实现不区分大小写的查找了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。