距离上次更新本文已经过去了 659 天,文章部分内容可能已经过时,请注意甄别

在 C++11 中添加了定义原始字符串的字面量

1. 定义和基本使用

定义方式为:

cpp
1
R"xxx(原始字符串)xxx"

其中 () 两边的字符串可以省略,R 只会处理括号中的字符串。

原始字面量 R 可以直接表示字符串的实际含义,而不需要额外对字符串做转义等操作。

cpp
1
2
3
R"("HELLO")"
等同于
R"(\"HELLO\")"

可以理解为是忽略所有转义字符的一个字符串格式

cpp
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{
const char* s1 = R"(Hello\\World)";
cout << s1 << endl;
const char* s2 = "Hello\\World";
cout << s2 << endl;
return 0;
}

img

2. 实际场景

在进行项目开发,需要用到 Json 字符串时,这个 R 字符串就非常有用

cpp
1
rsp.body = R"({"code":0, "message":"更新点踩成功"})";

我们只需要使用 R 字符串,就能正常编写 json 格式的字符串

如果不使用 R 字符串,就必须给 Json 中的每一个 " 添加用于转义的 \",大大增加了代码的繁琐性,而且还容易出现漏加转义而导致的 bug