文字列を解析して、\.
のすべての箇所を何かに置き換えるにはどうすればよいですか?しかし同時に\
(リテラル)..例で、すべての\\
を置き換える:ユーザーストリングのエスケープ文字をエスケープする
hello \. world
=>hello "." world
hello \\. world
=>hello \. world
hello \\\. world
=>hello \"." world
最初の反応は、STDを使用することでした::次のようにreplace_ifと入力します。
bool escape(false);
std::replace_if(str.begin(), str.end(), [&] (char c) {
if (c == '\\') {
escape = !escape;
} else if (escape && c == '.') {
return true;
}
return false;
},"\".\"");
ただし、これは単に\.
による。\"."
配列。また、凝視中の\\
の部品では機能しません。
これには優雅なアプローチがありますか? forループを使ってハッキングジョブを開始する前に、文字列を再構築するのに&?
'' \\\\ " - >" \\ "'、 '" \\ x " - >" x "';文字ではありません。 – ulidtko
私は「forループを使ったハック・ジョブと文字列を再構築する」*が最も醜い解決策になると思います。 –