📅  最后修改于: 2023-12-03 15:13:59.945000             🧑  作者: Mango
在 C++ 中,判断一个字符串是否包含另一个字符串是一个常见的操作。本篇文章将为程序员们介绍 C++ 中实现字符串包含的几种方法。
C++ 中的 string
类型提供了一个 find()
函数,可以用来查找一个子字符串在另一个字符串中的位置。如果找到了,函数返回第一个匹配的字符的下标;如果没找到,函数返回 string::npos
,表示找不到。
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "hello world";
string str2 = "world";
if (str1.find(str2) != string::npos) {
cout << "str1 contains str2" << endl;
} else {
cout << "str1 does not contain str2" << endl;
}
return 0;
}
输出:
str1 contains str2
C++ 中的 string
类型还提供了一个 compare()
函数,可以用来比较两个字符串是否相等。如果一个字符串包含另一个字符串,那么使用 substr()
函数取出子串比较即可。
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "hello world";
string str2 = "world";
if (str1.substr(str1.find(str2), str2.length()).compare(str2) == 0) {
cout << "str1 contains str2" << endl;
} else {
cout << "str1 does not contain str2" << endl;
}
return 0;
}
输出:
str1 contains str2
C++ 中的字符串类库还提供了一些 C 函数,例如 strstr()
函数,可以在一个字符串中查找子字符串。strstr()
函数返回一个指向子字符串首字符的指针,如果找不到,返回 NULL
。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[] = "hello world";
char str2[] = "world";
if (strstr(str1, str2) != NULL) {
cout << "str1 contains str2" << endl;
} else {
cout << "str1 does not contain str2" << endl;
}
return 0;
}
输出:
str1 contains str2
以上就是在 C++ 中实现字符串包含的几种方法。尽管像 string::find()
和 strstr()
这样的函数可以很方便地完成这个任务,但是在实际开发中,应该根据实际情况选择最适合自己的方法。