转义序列

来自cppreference.com
< cpp‎ | language
 
 
C++语言

|- class="t-nv-h1" | colspan="5" | 一般主题 |- | |- |

预处理器
注释

|

关键字
转义序列

|-

|- class="t-nv-h1" | colspan="5" | 流程控制 |-

条件执行语句

| |- |

|

|-

循环语句

| |- |

|

|-

跳转语句

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 函数 |-

函数声明 Lambda函数声明 inline说明符 异常说明符 (已弃用) noexcept说明符 (C++11)

|- class="t-nv-h1" | colspan="5" | Exceptions |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 命名空间 |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类型 |- | |- |

|

|-

说明符

| |- |

decltype (C++11)
auto (C++11)
alignas (C++11)

|

|-

存储持续期说明符 Initialization

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 表达式 |- | |- |

值类别
求值顺序

|

|-

替代表示 字面量 布尔型 - 整型 - 浮点型 字符型 - 字符串 - nullptr (C++11) 用户定义 (C++11)

|- class="t-nv-h1" | colspan="5" | Utilities |-

属性 (C++11) Types typedef声明 类型别名声明 (C++11) Casts 隐式类型转换 - 显示类型转换 static_cast - dynamic_cast const_cast - reinterpret_cast 内存分配

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类 |- | |- |

|

|-

类特有的函数属性

| |- |

|

explicit (C++11)
static

|-

静态成员函数

| |- |

|

|- |- class="t-nv-h1" | colspan="5" | 模板 |- | |- |

|

|- |- class="t-nv-h1" | colspan="5" | 杂项 |- | |- |

|

|-

 

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

可以使用下列转义序列。实现可以提供其他的转义序列:

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

[编辑] 注释

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

换行符\n在文本模式输入输出时具有特殊的意义,它将被转换为和操作系统相关的换行符字节或字节序列。

八进制转义序列限制为三个八进制数字,但是八进制转义序列会在之后第一个非有效的八进制数字处终止,若其出现的话。

十六进制转义序列没有长度限制,在第一个非有效十六进制数字出终止。如果一个十六进制转义序列表示的值不符合当前字符串字面值使用的字符类型(charchar16_tchar32_twchar_t)的范围,则没有规定其结果。

窄字符串字面值和char16_t字符串字面值中的通用字符名可能映射到多个字符。例如\U0001f34c在UTF-8编码中占4个char代码单元(\xF0\x9F\x8D\x8C),在UTF-16编码中占2个char16_t代码单元。

问号转义序列\?被用作防止在字符串字面值中解释为三字符符号:字符串"??/"会被作为"\"编译;但如果转义第二个问号,即"?\?/", 则会成为"??/"}}。

[编辑] 示例

#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?"

[编辑] 参见

来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/language/escape&oldid=39912