在 C++ 中,可以使用 std::string
类的成员函数 find()
来实现字符串的子串查找。
find()
函数的原型如下:
size_t find(const std::string& str, size_t pos = 0) const;
其中,str
是要查找的子串,pos
是可选参数,表示从哪个位置开始查找。如果省略该参数,则从字符串的开头开始查找。
函数返回子串在字符串中第一次出现的位置,如果没有找到则返回 std::string::npos
。
下面是一个简单的示例代码:
#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 << "子串的起始位置为:" << pos << std::endl;
} else {
std::cout << "未找到子串" << std::endl;
}
return 0;
}
输出结果为:
子串的起始位置为:6
注意,find()
函数是区分大小写的。如果要执行不区分大小写的查找,可以在查找之前将字符串转换为小写(或大写):
std::string str("Hello World");
std::string sub("world");
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
std::transform(sub.begin(), sub.end(), sub.begin(), ::tolower);
size_t pos = str.find(sub);
if (pos != std::string::npos) {
std::cout << "子串的起始位置为:" << pos << std::endl;
} else {
std::cout << "未找到子串" << std::endl;
}
输出结果为:
子串的起始位置为:6