'a'가 모두 'b'로, 'c'가 'd'로 바뀝니다.문자열에있는 여러 쌍의 문자를 바꿉니다.
내 현재 솔루션이다 : 그것은 표준을 사용하여 하나의 함수에서 할 수
std::replace(str.begin(), str.end(), 'a', 'b');
std::replace(str.begin(), str.end(), 'c', 'd');
인가? 두 개의 패스를 좋아하지 않는 경우에
'a'가 모두 'b'로, 'c'가 'd'로 바뀝니다.문자열에있는 여러 쌍의 문자를 바꿉니다.
내 현재 솔루션이다 : 그것은 표준을 사용하여 하나의 함수에서 할 수
std::replace(str.begin(), str.end(), 'a', 'b');
std::replace(str.begin(), str.end(), 'c', 'd');
인가? 두 개의 패스를 좋아하지 않는 경우에
까다로운 솔루션 :
#include <algorithm>
#include <string>
#include <iostream>
#include <map>
int main() {
char r; //replacement
std::map<char, char> rs = { {'a', 'b'}, {'c', 'd'} };
std::string s = "abracadabra";
std::replace_if(s.begin(), s.end(), [&](char c){ return r = rs[c]; }, r);
std::cout << s << std::endl;
}
좋은 하나! 감사 –
, 당신은 한 번 작업을 수행 할 수 있습니다
std::transform(std::begin(s), std::end(s), std::begin(s), [](auto ch) {
switch (ch) {
case 'a':
return 'b';
case 'c':
return 'd';
}
return ch;
});
정규 표현식을 봐. 정규 표현식을 사용하여 한 문장으로 문자를 대체 할 수 있습니다. 그러나 그것은 귀하의 2 문장 솔루션보다 더 복잡 할 수 있습니다. –