📜  C++ string.find()函数(1)

📅  最后修改于: 2023-12-03 15:13:57.564000             🧑  作者: Mango

C++ string.find()函数

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() 函数时,需要注意以下几点:

  • 如果要查找的子字符串为空字符串,则返回 0。
  • 如果从指定起始位置开始查找,那么查找的是从该起始位置开始的子字符串。如果不指定起始位置,则查找的是整个字符串。
  • 如果要查找的子字符串在原字符串中出现多次,则只会返回第一次出现的位置。如果需要查找所有出现的位置,则需要在循环中多次调用 find() 函数,每次从上一次查找到的位置之后继续查找。
  • 如果希望区分大小写,在查找时需要使用 string.find() 函数的重载形式,即指定第三个参数为要比较的字符数或字符串长度。例如,使用 str.find(sub_str, 0, sub_str.length()) 可以保证查找时区分大小写。