raw string literal

以   R"(  开头, )" 结束,是可以跨越多行的字符串字面值,转义字符如 \t\n 在raw string literal中是普通的文本,而不再是转义字符,

下面代码


 const char* text = R"(Hello\t\n
"World"!)";
std::cout << text;

将输出
Hello\t\n
"World"!

如果不使用raw string literal,上面代码必须这样写 const char* text = "Hello\\t\\n\n\"World\"!";

因为raw string literal以 )"结束,不能在raw string literal 中再包含字符 )"。下面代码是非法的。

const char* text = R"(Embedded )" in string)";    // Error!

如果你想在raw string literal中包含 )",需要使用raw string literal扩展语法:

const char* raw = R"d-char-sequences(raw-char-sequences)d-char-sequences"

raw-char-sequences 是原始的文本,首尾的 d-char-sequences 是分隔符,首尾分隔符必须一样,最长为16个字符,而且 )d-char-sequences 不能在 raw-char-sequences 中出现。

之前的代码可以这样改正:

const char* text = R"--(Embedded )" in string)--";

推荐阅读:Professional C++ 4th 2018版,本文内容基本摘自 Professional C++ 4th 英文版。

C++ raw string literal的更多相关文章

  1. C++11:新式的字符串字面常量(String Literal)

    自C++11起,我们可以定义 raw string 字符串字面常量. Raw string 允许我们定义所见即所得的字符串字面常量,从而可以省下很多用来修饰特殊 字符的符号. Raw string 以 ...

  2. C++11中的raw string literals

    作为一名C++书看得少得可怜的新手,我一直没有勇气去系统地学习一下C++ 11添加的新特性.不过,平日里逛论坛,阅读大犇们的博客,倒是了解了一些.比如,这个帖子: 如何绕过g++ 4.8.1那个不能在 ...

  3. 利用宏方便地书写raw string literals

    以前一直没用过标准库的regex,今天写一个hlsl的解析工具的时候用了一下,发现用字符串字面值写regular expression的时候非常不方便,特别是每个“\”字符都要被识别为转义,只能写成“ ...

  4. format not a string literal and no format arguments

    今天cocos2d-x打包 android的时候报错:format not a string literal and no format arguments 报错点是:__String::create ...

  5. Android studio2.2 ndk 错误 :format not a string literal and no format arguments!

    在Android Studio2.2 进行NDK编程,在对*char 字符串 进行日志输出时,报错: error: format not a string literal and no format  ...

  6. python raw String 获取字符串变量中的反斜杠

    常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...

  7. ORA-01704: string literal too long

    update mkt_page_links set longdescription = ' {some html text > 4000 char} ' where menuidno = 310 ...

  8. 使用MySql数据库, 浏览器接收返回数据报错SyntaxError: unterminated string literal

    用php写了一个很简单的页面, 用来记录常用的oracle的关键字和各种函数, 以后用起来查一下方便, 原来是用java写了一个web项目, 但是用起来太麻烦, 真的不如php方便, 然后就把整理的内 ...

  9. cocos2dx android版本移植时的Error format not a string literal and no format arguments解决方案

    原文地址 : http://www.cnblogs.com/hhuang2012/p/3336911.html cocos2dx android版本移植时的Error format not a str ...

随机推荐

  1. 123457123457#0#-----com.threeapp.renzhepaoku01----儿童跑酷游戏(忍者版)

    com.threeapp.renzhepaoku01----儿童跑酷游戏(忍者版)

  2. java通过telnet远程至windows机器执行dos命令

    准备工作,远程windows机器中开启telnet服务,将远程登录用户添加至telnetClients用户组 核心代码: import java.io.IOException; import java ...

  3. delphi ADOQUery中错误解决方法"无法为更新定位行。一些值可能已在最后...

    使用delphi中的ADOQuery控件中自带的,insert ,edit,delete此操作时,有时会出现下面的错误提示,提示错误信息:"无法为更新定位行.一些值可能已在最后一次读取后已更 ...

  4. 浅谈service、DAO层引入(转)

    转自 http://www.4u4v.net/mvc-simple-enough-on-the-introduction-of-service-dao-layer.html MVC是web开发中常见的 ...

  5. Tinymce在ASP.NET中的使用方法

    现在做网页,用FCKEditor用得比较多,它的实现原理是在要加入FCKEditor的地方加入一个iframe,并将其src指向FCKeditor/editor/fckeditor.html?Inst ...

  6. ELK之elasticsearch插件导致filebeat没有上传日志至elasticsearch解决办法

    使用filebeat收集nginx发现日志为上传,elasticsearch没有日志,kibana没有展示 查看filebeat日志 日志目录为/var/log/filebeat  下面有多个日志文件 ...

  7. Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)

    第十七篇(书中 7.4~8.2节 内容) 昨天看到 7.3 节,那么今天. 开始 7.4节.     好吧,这些其他的服务器运行知识,就不搞了... 至此,7.4节 内容结束. 开始 7.5节 内容. ...

  8. 一次Python爬虫的修改,抓取淘宝MM照片

    这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...

  9. table列表全选

    <table><tr><td><input type="checkbox" /></td><td></ ...

  10. Vue双向数据绑定简易实现

    一.vue中的双向数据绑定主要使用到了Object.defineProperty(新版的使用Proxy实现的)对Model层的数据进行getter和setter进行劫持,修改Model层数据的时候,在 ...