21xrx.com
2024-12-28 11:36:12 Saturday
登录
文章检索 我的文章 写文章
C++中如何查找字符串中特定的另一个字符串?
2023-07-06 10:45:37 深夜i     --     --
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++中查找一个字符串中特定的另一个字符串。根据实际需要,选择合适的方法即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复