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\"
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top