什么是C++;等价于C#@符号前缀字符串? C++的符号前缀字符串的C++等价物是什么?用于自动转义符号

什么是C++;等价于C#@符号前缀字符串? C++的符号前缀字符串的C++等价物是什么?用于自动转义符号,c++,escaping,C++,Escaping,示例:var howmanyslashesarethere=@“\\\” > P>你正在寻找C++的“原始字符串”特性,但它是一个最近添加的(C++ 11,我相信)。p> 它被记录在C++11标准的2.14.5字符串列表中,尽管这本书对你来说可能有点枯燥,所以我建议你用谷歌搜索“原始字符串”C++ 除了摆脱像“\\\\nasbox\\sharename\\downloads\\super\u sekrit\u stuff”这样的转义加倍monstrosite外,它还允许您绕过“添加\n字符并组合

示例:
var howmanyslashesarethere=@“\\\”

> P>你正在寻找C++的“原始字符串”特性,但它是一个最近添加的(C++ 11,我相信)。p> 它被记录在C++11标准的
2.14.5字符串列表中,尽管这本书对你来说可能有点枯燥,所以我建议你用谷歌搜索
“原始字符串”C++

除了摆脱像
“\\\\nasbox\\sharename\\downloads\\super\u sekrit\u stuff”
这样的转义加倍monstrosite外,它还允许您绕过“添加
\n
字符并组合相邻字符串”的技巧,例如:

htmlString =
    "<HTML>\n"
      "<HEAD>\n"
        "<TITLE>My page</TITLE>\n"
        "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n"
      "</HEAD>\n"
      "<BODY LINK=\"#0000ff\" VLINK=\"#800080\" BGCOLOR=\"#ffffff\">\n"
        "<P> </P>\n"
        "<PRE>\n";
htmlString=
“\n”
“\n”
“我的页面\n”
“\n”
“\n”
“\n”
“

\n” “\n”;
更具可读性(由于第二个变体中有空格,所以不完全相同,但对于HTML来说完全可以,因为它在本例中忽略了添加的空格):

htmlString=R“xyzy(
我的页面

)xyzy”;
在C++11中,可以使用原始字符串文字:

std::string s = R"(This\is\a\raw\string\literal)";

std::string s = R"*(This \one contains \a )", which would normally end the string)*";

这是上面的单词,a.

C++11添加了
raw
字符串文字,这些文字至少有点相似

R"(This is a raw literal)";
这些对正则表达式特别有用,例如:

R"@(\w+\d*)@"
…这将,作为一个传统的文字将是:

"\\w+\\d*"

虽然差别不大,但它可以带来差别,特别是在较长的正则表达式中。

可能重复@Jake-Gotcha!谢谢你的澄清。Net术语是“逐字字符串文字”,其目的是使“\”不被视为转义字符:。在Java或当前版本的C++中没有等价物(也不,我不认为C++ 11是“当前版本”))这是旧的,但在java的最后一个例子中,它应该是<代码> R“(…)”<代码>。它可能不应该有反斜杠,因为它是一个原始字符串。编写的第一个版本不会有第二个版本显示的缩进。如果需要缩进,可以将老式版本中的所有左引号向左移动以累积空白。原始字符串更容易获得正确的结果。分隔符
@
必须在引号内。@user362515:Oops——令人惊讶的是,当一个打字错误没有通过编译器运行时,它竟然能存活近4年。。。
R"@(\w+\d*)@"
"\\w+\\d*"