更改字符串C++中的多个字符

0 c++ eclipse visual-c++ c++11

大家早上好,前几天我在想,我找不到解决办法.

我只需要使用字符串类来更改字符串中的多个字符.

我尝试使用替换功能,但只替换一个字符.

例:

原始字条:"Hola Pepe,com va la vida"

输入要替换的字符aeiou输入要替换它的字符*

H*l*P*p*,c*mv*l*v*d*

谢谢大家.

ale*_*in0 5

我想说你想要的最可读的方法是使用std::transform:

#include <algorithm>
...
std::set<char> vowels = {'a', 'o', 'e', 'i', 'u'};
char change_to = '*';
std::string s = "Hola Pepe, com va la vida";
auto transformation_operation = [vowels, change_to](char c)
{
    return vowels.count(c) ? change_to : c;
};
std::transform(s.begin(), s.end(), s.begin(), transformation_operation);
Run Code Online (Sandbox Code Playgroud)

transformation_operation是一个lambda,它实际上以理想的方式转换一个char(如果你愿意,可以以函数或类的形式实现).为此,它使用捕获的set vowels和character change_to.要添加更多细节,它会检查字符是否存在于vowels集合中,如果存在,则返回change_to,如果不存在,则返回原始字符.

std::transform为每个元素调用此lambda s.begin()s.end()存储从s.begin()(即)到位的结果.