转义序列

来自cppreference.com
< cpp‎ | language
 
 
 
表达式
概述
值类别(左值 lvalue 、右值 rvalue 、亡值 xvalue )
求值顺序(序列点)
常量表达式
不求值表达式
初等表达式
lambda 表达式(C++11)
字面量
整数字面量
浮点字面量
布尔字面量
字符字面量,包含转义序列
字符串字面量
空指针字面量(C++11)
用户定义字面量(C++11)
运算符
赋值运算符a=b, a+=b, a-=b, a*=b, a/=b, a%=b, a&=b, a|=b, a^=b, a<<=b, a>>=b
自增与自减++a, --a, a++, a--
算术运算符+a, -a, a+b, a-b, a*b, a/b, a%b, ~a, a&b, a|b, a^b, a<<b, a>>b
逻辑运算符a||b, a&&b, !a
比较运算符a==b, a!=b, a<b, a>b, a<=b, a>=b, a<=>b(C++20)
成员访问运算符a[b], *a, &a, a->b, a.b, a->*b, a.*b
其他运算符a(...), a,b, a?b:c
默认比较(C++20)
运算符的替代表示
优先级和结合性
折叠表达式(C++17)
new 表达式
delete 表达式
throw 表达式
alignof
sizeof
sizeof...(C++11)
typeid
noexcept(C++11)
运算符重载
类型转换
隐式转换
const_cast
static_cast
reinterpret_cast
dynamic_cast
显式转换 (T)a, T(a)
用户定义转换
 

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

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

转义序列 描述 表示
\' 单引号 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 通用字符名(任意 Unicode 值)
可能生成多个字符
编码点 U+nnnn
\Unnnnnnnn 通用字符名(任意 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 文档