转义序列

来自cppreference.com
< cpp‎ | language

转义序列用于在字符串字面量字符字面量中表示某些特殊字符。

下列转义序列可用(可提供有实现定义语义的额转义序列):

转义序列 描述 表示
\' 单引号 ASCII 编码中为字节 0x27
\" 双引号 ASCII 编码中为字节 0x22
\? 问号 ASCII 编码中为字节 0x3f
\\ 反斜杠 ASCII 编码中为字节 0x5c
\a 响铃 ASCII 编码中为字节 0x07
\b 退格 ASCII 编码中为字节 0x08
\f 换页 ASCII 编码中为字节 0x0c
\n 换行 ASCII 编码中为字节 0x0a
\r 回车 ASCII 编码中为字节 0x0d
\t 水平制表 ASCII 编码中为字节 0x09
\v 垂直制表 ASCII 编码中为字节 0x0b
\nnn 任意八进制值 字节 nnn
\xnn 任意十六进制值 字节 nn
\unnnn
(C++11 起)
通用字符名(任意 Unicode 值)
可能生成多个字符
编码点 U+nnnn
\Unnnnnnnn
(C++11 起)
通用字符名(任意 Unicode 值)
可能生成多个字符
编码点 U+nnnnnnnn

[编辑] 注意

八进制转义序列中 \0 最有用,因为它表示空终止字符串中的空终止字符。

换行符 \n 在用于文本模式 I/O 时有特殊含义:它被转换为 OS 限定的换行表示,通常是字节或字节序列。某些系统替而用长度域标记其文本行。

八进制转义序列拥有三个八进制位的长度限制,但若提前遇到不是合法八进制位的字符,则在首个这种字符处终止。

十六进制转义序列无长度限制,并在首个不是合法十六进制位的字符处终止。若单个十六进制转义序列所表示的值不适于此字符串字面量或字符常量中使用的字符类型( charchar16_tchar32_twchar_t ),则结果未指定。

窄字符串字面量或 16 位字符串字面量中的通用字符名可能映射到多于一个字符,例如 \U0001f34c 在 UTF-8 中是 4 个 char 编码单元( \xF0\x9F\x8D\x8C ),而在 UTF-16 中是 2 个 char16_t 编码单元( \uD83C\uDF4C )。

问号转义序列 \? 用于阻止在字符串字面量内转译三标符:如 "??/" 的字符串被编译成 "\" ,但若如在 "?\?/" 中转义第二个问号,则它变为 "??/"

[编辑] 示例

#include <iostream>
 
int main()
{
    std::cout << "This\nis\na\ntest\n\nShe said, \"How are you?\"\n";
}

输出:

This
is
a
test
 
She said, "How are you?"

[编辑] 参阅

转义序列C 文档