21xrx.com
2025-03-27 23:50:23 Thursday
文章检索 我的文章 写文章
C++中如何查找字符串中特定的另一个字符串?
2023-07-06 10:45:37 深夜i     13     0
C++ 查找 字符串 特定 另一个字符串

C++作为一种流行的编程语言,不仅可以用来实现各种各样的计算机程序,还可以方便地处理字符串。在日常编程中,我们经常需要查找一个字符串中特定的另一个字符串。下面介绍C++中常用的几种方法,帮助你实现这个任务。

1. find()函数

C++中的string类型提供了find()函数来查找一个子字符串在另一个字符串中的位置。该函数的第一个参数是要查找的子字符串,第二个参数是可选的,表示查找的起始位置。如果该子字符串不在原字符串中,find()函数将返回string::npos,否则返回子字符串在原字符串中的位置。

例如,下面的代码查找字符串str中是否包含子字符串sub_str:

string str = "Hello, world!";
string sub_str = "world";
if (str.find(sub_str) != string::npos) {
  cout << "sub_str found at position " << str.find(sub_str) << endl;
} else
  cout << "sub_str not found" << endl;

2. strstr()函数

C语言标准库中提供了strstr()函数,可以用来在一个字符串中查找另一个字符串。其函数原型如下:

char* strstr(char* str1, const char* str2);

该函数的第一个参数是要查找的字符串,第二个参数是要查找的子字符串。如果该子字符串不在原字符串中,strstr()函数将返回NULL,否则返回子字符串在原字符串中的位置。

例如,下面的代码查找字符串str中是否包含子字符串sub_str:

char* str = "Hello, world!";
char* sub_str = "world";
if (strstr(str, sub_str) != NULL) {
  cout << "sub_str found at position " << strstr(str, sub_str) - str << endl;
} else
  cout << "sub_str not found" << endl;

该代码在输出时使用了指针运算符“-”,以获取子字符串在原字符串中的位置。

3. istringstream类

C++中的sstream头文件提供了istringstream流,可以方便地从一个字符串中读取数据。如果要查找一个字符串中的特定子字符串,可以先将原字符串包装成istringstream对象,然后按照惯例使用流运算符“>>”来逐个读取原字符串中的单词,再使用find()函数检查每个单词是否包含子字符串。

例如,下面的代码查找字符串str中是否包含子字符串sub_str:

string str = "Hello, world!";
string sub_str = "world";
istringstream iss(str);
string word;
int pos = -1;
while (iss >> word) {
  pos = word.find(sub_str);
  if (pos != string::npos)
    break;
  
}
if (pos != -1) {
  cout << "sub_str found at position " << str.find(word) << endl;
} else
  cout << "sub_str not found" << endl;

该代码使用istringstream对象从原字符串中逐个读取单词,并使用find()函数检查每个单词是否包含子字符串,一旦找到目标子字符串,就退出循环,并使用string::find()函数在原字符串中查找该单词的位置。

总之,以上这些方法都可以方便地在C++中查找一个字符串中特定的另一个字符串。根据实际需要,选择合适的方法即可。

  
  

评论区