8

マネージ C++ でそのままの文字列リテラルを使用する方法はありますか? C#に似ている

String Docs = @"c:\documents and settings\"
4

4 に答える 4

9

C++11 には、生の文字列リテラルがあります。

cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;

出力は次のとおりです。

(\"ddd\aa)\n
(\"ddd\aa)\n
于 2013-03-04T12:20:03.127 に答える
6

これは現在不可能です。マネージ C++ 文字列リテラルには、通常の C++ 文字列とほぼ同じ規則があります。マネージ C++ 仕様は、実際には ANSI C++ 標準の拡張にすぎません。

現在、C++ では C# スタイルのリテラル構文はサポートされていません (マネージかどうかに関係なく)。すべての文字を手動でエスケープする必要があります。

詳細については、C++/CLI 仕様のセクション 9.1.3.3 を参照してください。(仕様リンク)

于 2008-12-09T17:12:26.140 に答える
3

'@' C# 逐語的な文字列リテラルほど簡潔ではありませんが、次のコードは /Clr:pure をコンパイルするため、純粋な MSIL に C++ Raw 文字列リテラルを使用して同様の結果を得ることができます。

String^ f = gcnew String(R"(C:\foo\bar.txt)");

生の文字列リテラルは、通常の C++ でも使用できます。

char *x = R"(C:\foo\bar.txt)";

詳細については、Google の「msdn C++ 文字列リテラル」を参照してください。

于 2014-10-09T17:55:37.497 に答える