有没有办法在托管C ++中使用逐字字符串文字?类似于C#的
String Docs = @"c:\documents and settings\"
答案 0 :(得分:9)
在C ++ 11中,有原始字符串文字:
cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;
输出是:
(\"ddd\aa)\n
(\"ddd\aa)\n
答案 1 :(得分:6)
目前无法实现。托管C ++字符串文字几乎与普通C ++字符串完全相同。托管C ++规范实际上只是ANSI C ++标准的增强。
目前在C ++中不支持C#样式文字语法(托管与否)。您必须手动转义每个角色。
有关更多详细信息,请参阅C ++ / CLI规范中的第9.1.3.3节。 (Spec Link)
答案 2 :(得分:4)
虽然不像'@'C#verbatim字符串文字那样简洁,但下面的编译/ Clr:pure,所以你可以使用C ++ Raw String Literals来实现纯MSIL和类似的结果:
String^ f = gcnew String(R"(C:\foo\bar.txt)");
原始字符串文字也可以在常规C ++中使用:
char *x = R"(C:\foo\bar.txt)";
Google“msdn C ++ String Literals”了解更多信息
答案 3 :(得分:0)
snip ..对于.NET编程,Visual Studio 2017中的Visual C ++支持使用/ clr(公共语言运行时编译)编译器选项来创建混合程序集。 / clr:pure和clr:safe选项在Visual Studio 2015中已弃用,而在Visual Studio 2017中不支持。如果您的代码需要安全或可验证,则建议将其移植到C#。