• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++11原始字符串

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

先看一下C++11标准里的字义(2.14.5):

raw-string:
  " d-char-sequenceopt ( r-char-sequenceopt ) d-char-sequenceopt "
r-char-sequence:
  r-char
  r-char-sequence r-char
r-char:
  any member of the source character set, except
  a right parenthesis ) followed by the initial d-char-sequence
  (which may be empty) followed by a double quote ".
d-char-sequence:
  d-char
  d-char-sequence d-char
d-char:
  any member of the basic source character set except:
  space, the left parenthesis (, the right parenthesis ), the backslash \,
  and the control characters representing horizontal tab,
  vertical tab, form feed, and newline.

简单的翻译一下:

raw-string:

  "D(R)D"

R:

  r | Rr

r:

  除了 )D" 以外的任何字符串

D:

  d | Dd

d:

  除了空格,左括号,右括号,转义符以及控制符的任意字符串

下面来简单地分析一下:之所以这样定义语法,就是为了避免字符串的内部与结束符混淆。正常情况下字符串是位于R" "之间的,结束符就是"。可是字符串内部可以包含"怎么办呢?比如R"fewga"rgare",改结束符,变成)",这样就变成R"(fewga"rgare)",不会混淆了。可是问题又来了,如果字符串内包含)"呢?于是又引入了d-char-sequenceopt(可以为空),估且叫它分隔串吧,变成R"--(fewga)"rgare)--"这样的形式,于是问题解决。由于分隔串是用户指定的,所以可以使用不固定的结束符,不会混淆(除非有人太二)。字符串内有)-",我就用)#",有)#",我就用)**"。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#读取Excel方法发布时间:2022-07-14
下一篇:
【C++】赋值过程中类型转换发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap