C++ 11 实现一次性输出多行文本-无需转义符----原始字符串文本(Raw String Literal)的应用

面对需要多段字符输出结果的情况,C++11中的新特性:Raw String Literal,可谓是造福人民。

示例

C++ 11 实现一次性输出多行文本-无需转义符----原始字符串文本(Raw String Literal)的应用_第1张图片

原理

旧的字符串字面量的语法对于带有特殊字符意义的字面量需要添加转义符 "\" 来表示。

如:

转义符 输出
\n 换行
\t 水平制表
\v 垂直制表
单引号字符
" 双引号字符

因此面对一些比较繁琐的输出格式时,我们常常需要使用大量的转义符。
尤其是在正则表达式中。

想实现下面式子

\d{1}-\d{2}|\d{6}-\d{2}

我们需要写成

\\d{1}-\\d{2}|\\d{6}-\\d{2}

明显非常不方便,且可读性太差

引入了Raw String Literal之后,将不会对字符串内的转义符进行处理,进而达到所见即所得的效果。
字符串内的内容会如实输出到屏幕上。

示例
C++ 11 实现一次性输出多行文本-无需转义符----原始字符串文本(Raw String Literal)的应用_第2张图片

用法

就如上述示例中一样,基本用法就是将原来输出字符串 "" 替换成 R"()"

而后出现了一个问题就是,加入字符串内出现了 )" ,编译器不清楚哪一个才是真正的结束位置。
这时我们需要用到定界符(delimiter)

Raw String Literal的完整语法是 R"deli(...)deli"
注意注意注意!
其中 deli 并不是固定的!
其中 deli 并不是固定的!
其中 deli 并不是固定的!

那里其实是一个用户自定义的字符序列,最多16个基本字符,不可含反斜线,空格和小括号。
常用的deli是delimiter的缩写。

示例

C++ 11 实现一次性输出多行文本-无需转义符----原始字符串文本(Raw String Literal)的应用_第3张图片

你可能感兴趣的:(洛谷)