¿Hay alguna manera de usar literales literales literales en C++ administrado? Similar a C# 'sVerbatim Literals en Managed C++? (como C# 's @ "blah")
String Docs = @"c:\documents and settings\"
¿Hay alguna manera de usar literales literales literales en C++ administrado? Similar a C# 'sVerbatim Literals en Managed C++? (como C# 's @ "blah")
String Docs = @"c:\documents and settings\"
en C++ 11, no hay cadena de texto literal:
cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;
salida es:
(\"ddd\aa)\n
(\"ddd\aa)\n
Esto no es posible actualmente. Los literales de cadena administrados de C++ tienen casi las mismas reglas exactas que las cadenas normales de C++. La especificación C++ administrada es de hecho solo un aumento del estándar ANSI C++.
Actualmente no hay soporte para la sintaxis literal del 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. (Spec Link)
bien no es tan escueto como el '@' cadena de C# textualmente literal, lo siguiente compila/Clr: puro, por lo que puede usar C++ Raw String Literals para MSIL puro y un resultado similar:
String^ f = gcnew String(R"(C:\foo\bar.txt)");
literales de cadena primas se pueden utilizar en regulares C++ también:
char *x = R"(C:\foo\bar.txt)";
Google "MSDN C++ literales de cadena" para obtener más información
¡Oh! ¡¡estupendo!! Muchas gracias – Cluster
Esta respuesta fue mucho más correcta cuando se le dio entonces es ahora. – RichardPlunkett
@RichardPlunkett a la luz del reflejo del estado actual de las cosas, ¿deberíamos editar o eliminar esta publicación? –
Los literales de cadena sin formato se pueden usar para lograr el resultado deseado: String^f = gcnew String (R "(C: \ foo \ bar.txt)"); [Google msdn C++ cadenas literales para más información] – Cameron