C++ 字元常值
「字元常值」(character literal) 是由常數字元所組成。 其表示方式是以單引號括住字元。 字元常值有兩種類型:
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 個八進位數字的序列。 包含超過三個數字的八進位逸出序列,其行為是由實作定義,這些序列可以提供驚奇的結果。 例如:
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'
END 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 以維護您的資料嗎?」您可以用其他編碼來儲存檔案。 您也可以在 [檔案]、[進階儲存選項] 對話方塊中變更檔案的字碼頁。 若要關閉自動偵測 Unicode 字元,請在 [工具、選項、文字編輯器、一般] 選項頁面中,取消選取 [自動偵測無簽章 UTF-8 編碼]。