Pregunta

¿Hay alguna forma de usar literales de cadena litigitimimados en C ++ administrado? Similar a C#'s

String Docs = @"c:\documents and settings\"
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top