Literales literales en C ++ administrado? (como C#'s @"bla")
-
20-08-2019 - |
Pregunta
¿Hay alguna forma de usar literales de cadena litigitimimados en C ++ administrado? Similar a C#'s
String Docs = @"c:\documents and settings\"
Solución
En C ++ 11, hay una cadena en bruto literal:
cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;
La salida es:
(\"ddd\aa)\n
(\"ddd\aa)\n
Otros consejos
Esto no es posible actualmente. Los literales de cadena C ++ administrados tienen casi las mismas reglas exactas que las cadenas C ++ normales. La especificación de C ++ administrada es de hecho solo un aumento del estándar ANSI C ++.
Actualmente no hay soporte para la sintaxis literal de estilo C# en C ++ (administrado o no). Debes escapar manualmente de cada personaje.
Consulte la Sección 9.1.3.3 en la especificación C ++/CLI para obtener más detalles. (Enlace de especificaciones)
Si bien no es tan breve como el literal '@' c# literario literario literario, lo siguiente compila /clr: puro, por lo que puede usar literales de cadena sin procesar C ++ para MSIL puro y un resultado similar:
String^ f = gcnew String(R"(C:\foo\bar.txt)");
Los literales de cadena sin procesar se pueden usar en C ++ regular también:
char *x = R"(C:\foo\bar.txt)";
Google "MSDN C ++ String literals" para más información