📜  C++ 查找和替换子字符串(1)

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

C++ 查找和替换子字符串

在 C++ 中,我们可以使用 find() 函数查找子字符串,并使用 replace() 函数替换子字符串。这两个函数都是定义在 <string> 头文件中的。

查找子字符串

使用 find() 函数查找子字符串的语法如下:

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

其中,第一个参数是要查找的子字符串,第二个参数是查找的起始位置。如果找到了,返回子字符串在原字符串中的位置;如果没有找到,返回 string::npos

下面是一个查找子字符串的示例代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "hello world";
    string sub_str = "world";

    size_t pos = str.find(sub_str);

    if (pos != string::npos) {
        cout << "Found at position " << pos << endl;
    } else {
        cout << "Not found" << endl;
    }

    return 0;
}

输出结果:

Found at position 6
替换子字符串

使用 replace() 函数替换子字符串的语法如下:

basic_string& replace (size_t pos, size_t len, const basic_string& str);

其中,第一个参数是要替换的子字符串的起始位置,第二个参数是要替换的子字符串的长度,第三个参数是要替换成的新字符串。

下面是一个替换子字符串的示例代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "hello world";
    string old_sub_str = "world";
    string new_sub_str = "you";

    size_t pos = str.find(old_sub_str);

    if (pos != string::npos) {
        str.replace(pos, old_sub_str.length(), new_sub_str);
        cout << str << endl;
    } else {
        cout << "Not found" << endl;
    }

    return 0;
}

输出结果:

hello you
多次替换子字符串

如果要多次替换子字符串,可以使用 while() 循环来实现。每次循环中,使用 find() 函数查找子字符串的位置,并使用 replace() 函数替换子字符串。

下面是一个多次替换子字符串的示例代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "hello world";
    string old_sub_str = "o";
    string new_sub_str = "x";

    size_t pos = str.find(old_sub_str);

    while (pos != string::npos) {
        str.replace(pos, old_sub_str.length(), new_sub_str);
        pos = str.find(old_sub_str, pos + 1);
    }

    cout << str << endl;

    return 0;
}

输出结果:

hellx wxrld
总结

在 C++ 中查找和替换子字符串很容易,只需要使用 find()replace() 函数即可。如果要多次替换子字符串,可以使用 while() 循环来实现。