0 c++ eclipse visual-c++ c++11
大家早上好,前几天我在想,我找不到解决办法.
我只需要使用字符串类来更改字符串中的多个字符.
我尝试使用替换功能,但只替换一个字符.
例:
原始字条:"Hola Pepe,com va la vida"
输入要替换的字符aeiou输入要替换它的字符*
H*l*P*p*,c*mv*l*v*d*
谢谢大家.
我想说你想要的最可读的方法是使用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()(即)到位的结果.