Wörtliche Literale in Managed C ++? (wie C#'s @"bla")
-
20-08-2019 - |
Frage
Gibt es eine Möglichkeit, wörtliche String -Literale in Managed C ++ zu verwenden? Ähnlich wie C#'s
String Docs = @"c:\documents and settings\"
Lösung
In C ++ 11 gibt es Rohstreicher wörtlich:
cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;
Ausgabe ist:
(\"ddd\aa)\n
(\"ddd\aa)\n
Andere Tipps
Dies ist derzeit nicht möglich. Managed C ++ String -Literale haben fast die gleichen Regeln wie normale C ++ - Zeichenfolgen. Die verwaltete C ++ - Spezifikation ist in der Tat nur eine Augmentation des ANSI C ++ - Standards.
Derzeit gibt es in C ++ keine Unterstützung für C# -Stil -Literalsyntax (verwaltet oder nicht). Sie müssen jedem Charakter manuell entkommen.
Weitere Informationen finden Sie in Abschnitt 9.1.3.3 in der C ++/CLI -Spezifikation. (Spezifikation Link)
Obwohl dies nicht ganz so knapp wie das von '@' C# wörtliche String Literal ist, kompiliert /CLR: Pure, sodass Sie C ++ Roh -String -Literale für reine MSIL und ein ähnliches Ergebnis verwenden können:
String^ f = gcnew String(R"(C:\foo\bar.txt)");
RAW STRING LITERALS können auch in regulärer C ++ verwendet werden:
char *x = R"(C:\foo\bar.txt)";
Google "MSDN C ++ String Literale" für weitere Informationen