📜  c++ 字符串包含 - C++ (1)

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

C++ 字符串包含

在 C++ 中,判断一个字符串是否包含另一个字符串是一个常见的操作。本篇文章将为程序员们介绍 C++ 中实现字符串包含的几种方法。

方法一:使用 string::find() 函数

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
方法二:使用 string::compare() 函数

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
方法三:使用 strstr() 函数

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() 这样的函数可以很方便地完成这个任务,但是在实际开发中,应该根据实际情况选择最适合自己的方法。