大家早上好,前几天我在想,我找不到解决办法.
我只需要使用字符串类来更改字符串中的多个字符.
我尝试使用替换功能,但只替换一个字符.
例:
原始字条:"Hola Pepe,com va la vida"
输入要替换的字符aeiou输入要替换它的字符*
H*l*P*p*,c*mv*l*v*d*
谢谢大家.
我想说你想要的最可读的方法是使用std::transform
:
#include... std::set 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);
这transformation_operation
是一个lambda,它实际上以理想的方式转换一个char(如果你愿意,可以以函数或类的形式实现).为此,它使用捕获的set vowels
和character change_to
.要添加更多细节,它会检查字符是否存在于vowels
集合中,如果存在,则返回change_to
,如果不存在,则返回原始字符.
std::transform
为每个元素调用此lambda s.begin()
来s.end()
存储从s.begin()
(即)到位的结果.