C/C++判断字符串是否包含子串的方法与代码示例

桃夭
桃夭
发布时间:2026-10-16| 9人浏览过
原创

在C/C++开发中,快速判断主串是否包含特定子串是常见的字符串处理需求。根据使用语言的标准不同,主要有C语言的strstr函数和C++标准库std::string的find成员函数两种实现方式。

C语言风格:使用strstr函数

在传统的C语言接口中,字符串通常以字符数组形式存储,并以空字符'\0'作为结束标志。若要检测一个字符串(str1)中是否包含另一个字符串(str2),可以使用strstr库函数。

函数原型:

#include <cstring>
char * strstr(const char *str1, const char *str2);

功能说明: 该函数在主串str1中搜索第一次出现子串str2的位置。如果存在,函数返回指向该位置的char*指针;否则返回NULL。

代码示例:

#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main()
{
    string a = "abcdefghigklmn";
    char *b = "def";      // 预期包含
    char *c = "123";      // 预期不包含
    
    // 在a中查找b
    if (strstr(a.c_str(), b) == NULL) 
        cout << "not found\n"; // 输出结果:不存在
    else 
        cout << "found\n";     // 输出结果:存在

    // 在a中查找c
    if (strstr(a.c_str(), c) == NULL) 
        cout << "not found\n"; // 输出结果:不存在
    else 
        cout << "found\n";     // 输出结果:存在
        
    return 0;
}

C++风格:使用string::find方法

对于C++开发者而言,直接使用std::string类的成员函数更为便捷。find函数用于在字符串对象中查找指定的参数字符串。

函数重载形式:

string::size_type string::find(string &str);

返回值逻辑: - 成功:返回子串在主串中出现的起始位置索引(string::size_type类型)。 - 失败:返回静态常量string::npos(通常为 -1 的无符号表示),表示未找到。

代码示例:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string a = "abcdefghigklmn";
    string b = "def";   // 预期包含
    string c = "123";   // 预期不包含
    
    string::size_type idx;
    
    // 在a中查找b
    idx = a.find(b);
    if (idx == string::npos)
        cout << "not found\n"; // 不存在
    else
        cout << "found\n";     // 存在

    // 在a中查找c
    idx = a.find(c);
    if (idx == string::npos)
        cout << "not found\n"; // 不存在
    else
        cout << "found\n";     // 存在
        
    return 0;
}

总结与建议

以上两种方法在处理字符串包含关系时效果等同,运行效率几乎相同。然而,在C++项目中,由于无需手动处理字符指针转换(如调用.c_str()),string::find方法不仅代码编写更简便,也更具可读性,因此推荐在现代C++开发中优先使用。

以上就是C/C++编程判断String字符串是否包含某个字符串实现示例的详细内容,更多关于C/C++判断字符串包含子串的技巧请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。