<分区>
大家早上好,前几天一直在想,一直找不到解决办法。
我需要更改字符串中的几个字符,仅使用字符串类。
我尝试使用替换功能,但只替换了一个字符。
例子:
原始字符串:“Hola Pepe,com va la vida”
输入要替换的字符 a e i o u 输入要替换的字符 *
H * l * P * p *, c * m v * l * v * d *
谢谢大家。
<分区>
大家早上好,前几天一直在想,一直找不到解决办法。
我需要更改字符串中的几个字符,仅使用字符串类。
我尝试使用替换功能,但只替换了一个字符。
例子:
原始字符串:“Hola Pepe,com va la vida”
输入要替换的字符 a e i o u 输入要替换的字符 *
H * l * P * p *, c * m v * 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);
此处 transformation_operation
是一个 lambda,它实际上以理想的方式转换一个字符(如果您愿意,可以以函数或类的形式实现)。为此,它使用捕获的一组 vowels
和字符 change_to
。要添加更多细节,它会检查该字符是否存在于 vowels
集中,如果存在,则返回 change_to
,如果不存在,则返回原始字符。
std::transform
为从 s.begin()
到 s.end()
的每个元素调用此 lambda,存储结果开始用s.begin()
,即到位。
关于c++ - 更改字符串中的多个字符 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631002/