📜  在C++中std :: 字符串:: replace,std :: 字符串:: replace_if(1)

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

在C++中std::字符串::replace,std::字符串::replace_if

在C++中,std::字符串是表示字符序列的数据类型。在编程中,经常需要对字符串进行操作,比如替换特定字符或字符串等。std::字符串类中提供了replace和replace_if函数来实现这些操作。

1. std::字符串::replace函数

std::字符串::replace是一个成员函数,用于替换字符串中指定位置的字符或一段字符。它的用法如下:

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

其中,pos表示要替换的起始位置,len表示要替换的字符数,str表示替换后的字符串。

例如,下面的代码将字符串str中第3个位置开始的3个字符替换为"world":

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "hello, world!";
    str.replace(2, 3, "world");
    cout << str << endl;    // 输出:heworldo, world!
    return 0;
}

另一个用法是不指定len,如下所示,表示替换从pos位置开始到字符串末尾的所有字符:

string& replace (size_t pos, const string& str);

例如,下面的代码将字符串str中从第7个位置开始的所有字符替换为"there":

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "hello, world!";
    str.replace(6, "there");
    cout << str << endl;    // 输出:hello, there!
    return 0;
}
2. std::字符串::replace_if函数

std::字符串::replace_if是一个成员函数,用于根据条件替换字符串中的字符。它的用法如下:

template <class Predicate> 
string& replace_if (Predicate pred, const string& new_substring);

其中,pred表示一个谓词,它的参数为char类型,返回值为bool类型,用于判断要不要替换该字符;new_substring表示替换后的字符串。

例如,下面的代码将字符串str中所有小写字母替换为大写字母:

#include <iostream>
#include <string>
using namespace std;

struct is_lower {
    bool operator()(char c) {
        return c >= 'a' && c <= 'z';
    }
};

int main() {
    string str = "hello, world!";
    str.replace_if(is_lower(), "Hello, World!");
    cout << str << endl;    // 输出:Hello, World!
    return 0;
}

以上就是std::字符串::replace和std::字符串::replace_if函数的介绍。它们都是非常实用的字符串处理函数,可以方便地对字符串进行操作。