Literais literários em C ++ gerenciado? (como C#'S @“BLAH”)
-
20-08-2019 - |
Pergunta
Existe uma maneira de usar literais de string literalmente no C ++ gerenciado? Semelhante ao C#'
String Docs = @"c:\documents and settings\"
Solução
Em C ++ 11, há literal de cordas cruas:
cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;
A saída é:
(\"ddd\aa)\n
(\"ddd\aa)\n
Outras dicas
Atualmente, isso não é possível. Os literais de cordas C ++ gerenciados têm exatamente as mesmas regras que as seqüências normais de C ++. A especificação C ++ gerenciada é de fato apenas um aumento do padrão ANSI C ++.
Atualmente, não há suporte para a sintaxe literal do estilo C# em C ++ (gerenciado ou não). Você deve escapar manualmente de todos os personagens.
Consulte a Seção 9.1.3.3 nas especificações C ++/CLI para obter mais detalhes. (Link de especificações)
Embora não seja tão conciso quanto o literal '@' C# literal string literal, o seguinte compile /clr: puro, para que você possa usar literais de cordas cruas C ++ para MSIL puro e um resultado semelhante:
String^ f = gcnew String(R"(C:\foo\bar.txt)");
Literais de cordas cruas também podem ser usadas em C ++ regulares:
char *x = R"(C:\foo\bar.txt)";
Google "msdn c ++ string literais" para mais informações