跳转至

原始字符串

基本语法

为了在 C++ 中更好阅读一些带 \ 符号的字符串,C++11引入了新的特性原始字符串 (raw string literal)

raw:原始的;literal:字面量,完全按照原文的。顾名思义,原始字符串中的每个字符都是字符本身,不会有转义字符。

原始字符串是格式如下:

R"(字符串内容)";

原始字符串由 R 作为前缀,在 "("")" 之间的是字符串的内容。以下面的串为例

std::cout << R"(Hello C++11\n\0\tHello C++14)" << std::endl;
// 输出结果: Hello C++11\n\0\tHello C++14
少了转义字符的干扰,可以做到所见即所得,更方便我们阅读一些文本。

冲突处理

当字符串中存在 "()" 的组合时,就会使编译器对字符串的解析出现错误。处理的方法也很简单,C++11标准中允许在引号和括号之间可以插入一段标识符,并将标识符和引号小括号的组合作为原始字符串的开始和结束标志,如下:

std::cout << R"cyb(Hello "(C++11)"!\n)cyb" << std::endl;
// 输出结果: Hello "(C++11)"!\n