C++ String::find() 函数



C++ 的std::string::find()函数用于检测子字符串在字符串中的位置。此函数返回指定子字符串或字符第一次出现的索引。如果未找到子字符串,则返回string::npos,这是一个表示无效位置的常量。

此函数有几个重载版本,允许灵活地进行搜索,可以选择是否指定起始位置。

语法

以下是std::string::find()函数的语法。

size_t find (const string& str, size_t pos = 0) const;
or	
size_t find (const char* s, size_t pos = 0) const;
or
size_t find (const char* s, size_t pos, size_t n) const;
or	
size_t find (char c, size_t pos = 0) const;

参数

  • str − 指示另一个字符串对象。
  • s − 指向字符数组的指针。
  • pos − 指示字符串中第一个字符的位置。
  • n − 指示要匹配的字符序列的长度
  • c − 指示要搜索的单个字符。

返回值

此函数返回第一次匹配的第一个字符的位置。

示例 1

在下面的程序中,我们初始化了字符串 x = "Tutorialspoint is a educate company!",并使用 string::find() 函数指定了要搜索的位置为 "educate"。因此,它会打印该特定单词第一个字符的位置。

#include<iostream>
#include<string>
using namespace std;
int main() {
   string x = "Tutorialspoint is a educate company ";
   cout << x << '\n';
   cout << " educate Position = ";
   cout << x.find("educate");
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出。

Tutorialspoint is a educate company
educate Position = 20

示例 2

在下面的程序中,我们初始化了字符串 x = “I am a employee in Tutorialspoint”。在这里,我们通过给出 x.find(“employee”, 5) 来将位置作为参数传递。因此,输出将使用 string::find() 函数打印。

#include<iostream>
#include<string>
using namespace std;
int main() {
   string x = " I am a employee in Tutorialspoint ";
   cout << x << endl;
   cout << " position of employee = ";
   cout << x.find(" employee", 5);
   return 0;
}

输出

以下是上述代码的输出。

I am a employee in Tutorialspoint
position of employee = 7                             

示例 3

以下程序中,我们初始化了字符串 x = “Tutorialspoint Company!”。在这里,我们使用 string::find() 函数在字符串中查找单个字符。

#include<iostream>
#include<string>
using namespace std;
int main() {
   string x = " Tutorialspoint Company ";
   cout << "String = " << x << endl;
   cout << "position = " << x.find('C');
   return 0;
}  

输出

以下是上述代码的输出。

String = Tutorialspoint Company
position = 15          
string.htm
广告