用stl替换字符串中所有匹配的子串
时间: 2024-10-19 15:09:11 浏览: 27
在C++标准模板库(STL)中,并没有直接提供函数来替换字符串中的所有匹配子串,但是你可以通过`std::string`的成员函数结合`std::replace_if()`来进行操作。下面是一个简单的示例:
```cpp
#include <algorithm> // 包含replace_if函数
#include <cctype> // 包含tolower()等字符处理函数
void replaceAllChars(std::string& str, const std::string& from, const std::string& to) {
std::transform(str.begin(), str.end(), str.begin(), ::tolower); // 先转为小写以便于比较
std::replace_if(str.begin(), str.end(), [from](char c) { return c == from[0] && std::equal(from.begin()+1, from.end(), c+1); }, to[0]); // 使用lambda表达式查找并替换
}
// 示例
int main() {
std::string str = "Hello, World!";
replaceAllChars(str, "o", "*");
std::cout << str; // 输出: Hell*, W*rld!
return 0;
}
```
这个例子中,我们先将整个字符串转换成小写,然后用`std::replace_if()`遍历每个字符,如果当前字符是需要替换的子串的起始字符并且接下来的所有字符都相等,就替换它。
阅读全文