温馨提示×

如何在c++中实现字符串的子串查找

c++
小樊
123
2024-09-25 07:36:16
栏目: 编程语言

在 C++ 中,可以使用 std::string 类的成员函数 find() 来实现字符串的子串查找。

find() 函数的原型如下:

size_t find(const std::string& str, size_t pos = 0) const;

其中,str 是要查找的子串,pos 是可选参数,表示从哪个位置开始查找。如果省略该参数,则从字符串的开头开始查找。

函数返回子串在字符串中第一次出现的位置,如果没有找到则返回 std::string::npos

下面是一个简单的示例代码:

#include <iostream>
#include <string>

int main() {
    std::string str("hello world");
    std::string sub("world");

    size_t pos = str.find(sub);

    if (pos != std::string::npos) {
        std::cout << "子串的起始位置为:" << pos << std::endl;
    } else {
        std::cout << "未找到子串" << std::endl;
    }

    return 0;
}

输出结果为:

子串的起始位置为:6

注意,find() 函数是区分大小写的。如果要执行不区分大小写的查找,可以在查找之前将字符串转换为小写(或大写):

std::string str("Hello World");
std::string sub("world");

std::transform(str.begin(), str.end(), str.begin(), ::tolower);
std::transform(sub.begin(), sub.end(), sub.begin(), ::tolower);

size_t pos = str.find(sub);

if (pos != std::string::npos) {
    std::cout << "子串的起始位置为:" << pos << std::endl;
} else {
    std::cout << "未找到子串" << std::endl;
}

输出结果为:

子串的起始位置为:6

0