什么是C ++相当于C#@符号前缀字符串?(What is the C++ equivalent o

2019-07-29 07:32发布

什么是C ++相当于C#@符号前缀字符串? 对于自动转义符号?

例如: var howManySlashesAreThereIn = @"\\\\\\" ;

Answer 1:

在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上的字,和一个参考 。



Answer 2:

您正在寻找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";


Answer 3:

C ++ 11将raw字符串文字是至少有些相似。

R"(This is a raw literal)";

这些是正则表达式,像特别有用:

R"@(\w+\d*)@"

...这将作为一个传统的文字是:

"\\w+\\d*"

虽然差别不是很大,它可以有所作为,尤其是在一个较长的正则表达式。



Answer 4:

这里是原始字符串(C ++ 11)的一个例子。

换行和反斜线出现一字不差。



文章来源: What is the C++ equivalent of the C# @ symbol prefixing strings?
标签: c++ escaping