Existe-t-il un moyen d'utiliser littéralement les littéraux String dans C++ managé? Similaire à C#Littéraux verbatim dans C++ managé? (comme C# 's @ "blah")
String Docs = @"c:\documents and settings\"
Existe-t-il un moyen d'utiliser littéralement les littéraux String dans C++ managé? Similaire à C#Littéraux verbatim dans C++ managé? (comme C# 's @ "blah")
String Docs = @"c:\documents and settings\"
en C++ 11, il y a la chaîne brute littérale:
cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;
sortie est:
(\"ddd\aa)\n
(\"ddd\aa)\n
Ceci n'est actuellement pas possible. Les littéraux de chaînes C++ gérés ont presque exactement les mêmes règles que les chaînes C++ normales. La spécification C++ gérée est en fait juste une augmentation de la norme ANSI C++.
Actuellement, il n'y a pas de support pour la syntaxe littérale de style C# en C++ (gérée ou non). Vous devez manuellement échapper tous les caractères.
Voir la section 9.1.3.3 dans la spécification C++/CLI pour plus de détails. (Spec Link)
Bien que pas tout à fait aussi laconique que le '@' C# string verbatim littéral, ce qui suit compile/Clr: pure, de sorte que vous pouvez utiliser C++ Raw String Literals pour MSIL pur et un résultat similaire:
String^ f = gcnew String(R"(C:\foo\bar.txt)");
littéraux chaîne brute peuvent être utilisés dans régulière C++ aussi:
char *x = R"(C:\foo\bar.txt)";
Google « msdn C++ littéraux de chaîne » pour plus d'infos
Oh! génial!! Merci beaucoup – Cluster
Cette réponse était beaucoup plus juste quand il a été donné alors il est maintenant. – RichardPlunkett
@RichardPlunkett à la lumière de la réflexion de l'état actuel des choses devrions-nous modifier ou supprimer ce post? –
Les littéraux de chaînes brutes peuvent être utilisés pour obtenir le résultat souhaité: Chaîne^f = gcnew Chaîne (R "(C: \ foo \ bar.txt)"); [Google msdn C++ Chaînes Littéraux pour plus d'informations] – Cameron