什么是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*"