web-dev-qa-db-fra.com

échapper R "()" dans une chaîne brute en C ++

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

Si j'ai R"()" à l'intérieur d'une chaîne brute, et cela provoque la confusion de l'analyseur. (c'est-à-dire, il pensait que le plus à gauche )" était la fin de la chaîne brute.

Comment puis-je y échapper?

10
One Two Three

Le format pour les littéraux de chaîne brute [ 2 ] est: R"delimiter( raw_characters )delimiter"

vous pouvez donc utiliser un délimiteur différent qui n'est pas dans la chaîne comme:

string raw_str = R"~(R"(foo)")~";
23
Mihayl

La chaîne brute se terminera après le premier )" il voit. Vous pouvez remplacer le délimiteur par *** par exemple:

string raw_str = R"***(R"(foo)")***";
9
wally