什么是C#@符号前缀字符串的C++等价物?

Jak*_*ake 17 c++ escaping

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

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

chr*_*ris 31

在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)*";
Run Code Online (Sandbox Code Playgroud)

这是关于它的C++ 11 FAQ的一个词,以及一个参考.


pax*_*blo 9

你正在寻找C++的"原始字符串"功能,但这是一个相当新的补充(C++ 11,我相信).

std::string howManySlashesAreThereIn = R"(\\\\\\)";
Run Code Online (Sandbox Code Playgroud)

它是在2.14.5 String lieteralsC++ 11标准中记录的,虽然这对你来说可能有点干,所以我建议谷歌搜索"raw string" c++.

除了摆脱那些逃脱倍增的怪物之外"\\\\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";
Run Code Online (Sandbox Code Playgroud)

更可读的东西(由于第二个变体中的空格不完全相同,但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";
Run Code Online (Sandbox Code Playgroud)