'a'のすべての文字を 'b'に、 'c'を 'd'に置き換えます。文字列内に複数の文字を置き換えます。
私の現在のソリューションです:それはSTDを使用して単一の機能でそれを行うことができ
std::replace(str.begin(), str.end(), 'a', 'b');
std::replace(str.begin(), str.end(), 'c', 'd');
ですか?
'a'のすべての文字を 'b'に、 'c'を 'd'に置き換えます。文字列内に複数の文字を置き換えます。
私の現在のソリューションです:それはSTDを使用して単一の機能でそれを行うことができ
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;
}
いいね!ありがとう –
次の2つのパスが気に入らない場合、あなたは一度それを行うことができます。
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;
});
正規表現を検索します。正規表現を使用して文字を1つのステートメントに置き換えることができます。ただし、2つのステートメントの解決策よりも複雑な場合があります。 –