📅  最后修改于: 2023-12-03 15:07:52.370000             🧑  作者: Mango
在C++中,std::字符串是表示字符序列的数据类型。在编程中,经常需要对字符串进行操作,比如替换特定字符或字符串等。std::字符串类中提供了replace和replace_if函数来实现这些操作。
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;
}
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函数的介绍。它们都是非常实用的字符串处理函数,可以方便地对字符串进行操作。