📅  最后修改于: 2023-12-03 15:13:57.564000             🧑  作者: Mango
string.find()
函数是C++中string类的一个成员函数,用于在字符串中查找指定子字符串的位置。
string.find(substring, start)
函数接受两个参数:
substring
:要查找的子字符串。start
:从起始位置开始查找的位置索引。函数返回 size_t
类型的整数值,表示子字符串在原字符串中第一次出现的位置索引。如果子字符串未出现,则返回 npos
。
下面的示例演示了如何使用 string.find()
函数和返回值:
#include <iostream>
#include <string>
int main()
{
std::string str = "hello world";
std::string sub_str = "world";
size_t found = str.find(sub_str); // 查找子字符串
if (found == std::string::npos) // 子字符串未找到
{
std::cout << "Substring not found\n";
}
else // 子字符串找到了
{
std::cout << "Substring found at index: " << found << std::endl;
// 从子字符串位置开始查找下一个子字符串
size_t next_found = str.find(sub_str, found + 1);
if (next_found == std::string::npos)
{
std::cout << "Only one occurrence of substring found\n";
}
else
{
std::cout << "Substring found at index: " << next_found << std::endl;
}
}
return 0;
}
输出:
Substring found at index: 6
Substring found at index: 4294967295
在上面的示例中,我们首先在字符串 str
中查找是否包含子字符串 sub_str
,然后根据 find()
函数返回值的结果,决定是输出子字符串未找到的提示,还是输出子字符串找到的位置索引。
接着,我们通过指定 start
参数为 found + 1
,从上一次查找到的子字符串的下一个位置开始继续查找下一个子字符串的位置索引。由于在本例中字符串中只包含一个子字符串 sub_str
,因此第二次查找返回值为 npos
。
在使用 string.find()
函数时,需要注意以下几点:
find()
函数,每次从上一次查找到的位置之后继续查找。string.find()
函数的重载形式,即指定第三个参数为要比较的字符数或字符串长度。例如,使用 str.find(sub_str, 0, sub_str.length())
可以保证查找时区分大小写。