什么是C ++相当于C#@符号前缀字符串? 对于自动转义符号?
例如: var howManySlashesAreThereIn = @"\\\\\\"
;
什么是C ++相当于C#@符号前缀字符串? 对于自动转义符号?
例如: var howManySlashesAreThereIn = @"\\\\\\"
;
在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)*";
这里是C ++ 11 FAQ上的字,和一个参考 。
您正在寻找C的“原始字符串”功能+ +,但它是一个相当新的增加(C ++ 11,我相信)。
std::string howManySlashesAreThereIn = R"(\\\\\\)";
它记录在2.14.5 String lieterals
的C ++ 11标准的,尽管这大部头可能是你有点干,所以我建议在谷歌上搜索了"raw string" c++
。
除了摆脱那些逃避加倍像monstrosites的"\\\\nasbox\\sharename\\downloads\\super_sekrit_stuff"
,它也允许你绕过“添加\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";
到更多的东西可读(不完全一样,由于在第二个变型空间,但完全没问题的HTML,因为它忽略了补充空间在这种情况下):
htmlString = R"xyzzy(
<HTML>
<HEAD>
<TITLE>My page</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080" BGCOLOR="#ffffff">
<P> </P>
<PRE>
)xyzzy";
C ++ 11将raw
字符串文字是至少有些相似。
R"(This is a raw literal)";
这些是正则表达式,像特别有用:
R"@(\w+\d*)@"
...这将作为一个传统的文字是:
"\\w+\\d*"
虽然差别不是很大,它可以有所作为,尤其是在一个较长的正则表达式。
这里是原始字符串(C ++ 11)的一个例子。
换行和反斜线出现一字不差。