Pergunta

Existe uma maneira de usar literais de string literalmente no C ++ gerenciado? Semelhante ao C#'

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top