c ++ 11 — экранировать R & quot; () & quot; в необработанной строке в переполнении стека

  string raw_str = R"(R"(foo)")";

Если у меня есть R"()" внутри необработанной строки, и это приводит к путанице синтаксического анализатора. (то есть, он думал, что самый левый )" был конец необработанной строки.

Как мне избежать этого?

3

Решение

Формат для строковые литералы[2] является: R"delimiter( raw_characters )delimiter"

так что вы можете использовать другой ограничитель это не в строке, как:

string raw_str = R"~(R"(foo)")~";
13

Другие решения

Необработанная строка завершится после первого )" это видит. Вы можете изменить разделитель на *** например:

string raw_str = R"***(R"(foo)")***";
5

По вопросам рекламы [email protected]