zoukankan      html  css  js  c++  java
  • C++11 原始字符串

    先看一下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)--"这样的形式,于是问题解决。由于分隔串是用户指定的,所以可以使用不固定的结束符,不会混淆(除非有人太二)。字符串内有)-",我就用)#",有)#",我就用)**"。

  • 相关阅读:
    Android进阶篇判断3G/WIFI/WAP
    Android基础篇配置查看Android系统源码
    Android进阶篇Http协议
    Android进阶篇流量统计
    Android进阶篇自定义Menu(设置Menu的背景及文字属性)
    Android进阶篇Gson解析Json数据
    Android进阶篇PopupWindow的使用
    Android数据篇SAX解析XML
    Android进价篇重力感应
    Android进阶篇ListView和Button共存
  • 原文地址:https://www.cnblogs.com/lzxskjo/p/4896164.html
Copyright © 2011-2022 走看看