C++ 字符文本

字符文本由一个字符常量构成。 它由用单引号引起来的字符表示。 有两种类型的字符文本:

  • 类型 char 的窄字符文本,例如 'a'

  • 类型 wchar_t 的宽字符文本,例如 L'a'

用于字符文本的字符可以是除保留字符(例如,换行符 ('\n')、反斜杠 ('\')、单引号 (') 和双引号 ("))以外的任何图形字符。 可以使用转义序列指定保留字符。

转义序列

有五种类型的转义序列:简单、八进制、十六进制、Unicode (UTF-8) 和 Unicode (UTF-16)。 转义序列可以是以下任一项:

转义序列

换行符

\n

水平制表符

\t

垂直制表符

\v

退格符

\b

回车符

\r

换页符

\f

警报

\a

反斜杠

\\

问号

? 或 \?

单引号

\'

双引号

\"

null 字符

\0

八进制

\ooo

十六进制

\xhhh

Unicode (UTF-8)

\uxxxx

Unicode (UTF-16)

\Uxxxxxxxx

以下代码显示了转义字符的一些示例。

#include <iostream>
using namespace std;

int main() {
    char newline = '\n';
    char tab = '\t';
    char backspace = '\b';
    char backslash = '\\';
    char nullChar = '\0';

    cout << "Newline character: " << newline << "ending" << endl; // Newline character:
                                                                  //  ending
    cout << "Tab character: " << tab << "ending" << endl; // Tab character : ending
    cout << "Backspace character: " << backspace << "ending" << endl; // Backspace character : ending
    cout << "Backslash character: " << backslash << "ending" << endl; // Backslash character : \ending
    cout << "Null character: " << nullChar << "ending" << endl; //Null character:  ending
}

有关带有 \U 的 UTF-16 转义序列的信息,请参阅 C++ 字符串文本

Microsoft 专用

八进制转义序列包含一个反斜杠,后跟最多 3 个八进制数字的序列。 包含 3 个以上的数字的八进制转义序列的行为是实现定义的;它们可以产生惊人的结果。 例如:

char c1 = '\100';     // char '@'
char c2 = '\1000';   // char '0'

包含非八进制字符的转义序列将作为最后一个非八进制字符计算。 例如:

char c3 = '\009'// char '9'
char c4 = '\089'     // char '9'
char c5 = '\qrs'     // char 's'

十六进制转义序列包含一个反斜杠,后跟字符 x 和一个十六进制数字序列。 不包含十六进制数字的转义序列将导致编译器错误 C2153:“十六进制常量必须至少有一个十六进制数字”。 具有十六进制字符和非十六进制字符的转义序列将作为最后一个非十六进制字符计算。 最大的十六进制值为 0xff。

char c1 = '\x0050';  // char 'P'
char c2 = '\x0pqr';  // char 'r'

结束 Microsoft 专用

反斜杠字符 (\) 在位于行末尾时将作为行继续符。 如果你希望反斜杠字符显示为字符文本,则必须在一行中键入两个反斜杠 (\\)。 有关行继续符的详细信息,请参阅转换阶段

Unicode 字符

带 UTF-8 编码的 Unicode 字符是用 \u 前缀表示的。 例如:

const wchar_t chr1 = L'\u79c1';

在许多情况下,可以仅输入所需字符:

const wchar_t chr2 = L'私'; 

Visual C++ 编辑器设置

默认情况下,Visual C++ 代码编辑器将使用适用于区域设置的编码。 在 Visual Studio 的英文版中,默认代码页为 1252。 但是,如果添加不同类型的字符(例如,Unicode 字符)并保存文件,你将看到一条消息:“此文件中的某些 Unicode 字符未能保存到当前代码页中。 是否以 Unicode 编码重新保存此文件,以便维护你的数据?”可使用其他编码来保存此文件。 还可以在**“文件,高级保存选项”对话框中更改文件的代码页。 可通过在“工具、选项、文本编辑器、常规”**选项页上取消选中“自动检测不带签名的 UTF-8 编码”,来禁用 Unicode 字符自动检测。

请参见

参考

C++ 文本