更改字符串中的每个第n个符号,而不循环遍历所有符号

时间:2013-12-09 13:33:24

标签: c++ string

我的字符串大小为N.我需要将此字符串的每个第n个符号更改为“a”而不通过所有符号循环?任何想法怎么做,因为我有点傻眼。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用replace_if

std::string s = "hi there";
int n = 2;

int counter = 0;
std::replace_if(s.begin(), s.end(), [&] (char c) {
    counter++;
    return ((counter - 1) % n == 0);
}, 'a');
std::cout << s;

Alternatively

std::replace_if(s.begin(), s.end(), [&] (char& c) { 
        return ((&c - &s[0]) % n == 0); 
}, 'a');