char、wchar_t、char8_t、char16_t、char32_t
、 char8_t
wchar_t
、 char16_t
和 char32_t
類型 char
是內建類型,代表英數位元、非英數位元字元和非列印字元。
語法
char ch1{ 'a' }; // or { u8'a' }
wchar_t ch2{ L'a' };
char16_t ch3{ u'a' };
char32_t ch4{ U'a' };
備註
此 char
類型是 C 和 C++ 中的原始字元類型。 char
此類型可用來儲存 ASCII 字元集或任何 ISO-8859 字元集的字元,以及 Shift-JIS 或 Unicode 字元集 UTF-8 編碼等多位元組字元的個別位元組。 在 Microsoft 編譯器中, char
是 8 位類型。 這兩者都是 與 signed char
unsigned char
不同的類型。 根據預設,除非 /J
使用編譯器選項,否則 類型的 char
變數會升級為 int
,如同從類型 signed char
升級一樣。 在 下 /J
,它們會被視為類型 unsigned char
,而且會升級為 int
,而不需要簽署延伸模組。
此類型 unsigned char
通常用來表示 位元組 ,這不是 C++ 中的內建類型。
此類型是實作 wchar_t
定義的寬字元類型。 在 Microsoft 編譯器中,它代表 16 位寬字元,用來儲存以 UTF-16LE 編碼的 Unicode,這是 Windows 作業系統上的原生字元類型。 通用 C 執行時間 (UCRT) 程式庫函式的寬字元版本會使用 wchar_t
及其指標和陣列類型作為參數和傳回值,如同原生 Windows API 的寬字元版本一樣。
char8_t
、 char16_t
和 char32_t
類型分別代表 8 位、16 位和 32 位寬字元。 ( char8_t
是 C++20 的新功能,需要 /std:c++20
或 /std:c++latest
編譯器選項。編碼為 UTF-8 的 Unicode 可以儲存在 類型中 char8_t
。 char8_t
和 char
類型的字串稱為 窄 字串,即使用來編碼 Unicode 或多位元組字元也一樣。 編碼為 UTF-16 的 Unicode 可以儲存在 類型中 char16_t
,而編碼為 UTF-32 的 Unicode 可以儲存在 類型中 char32_t
。 這些型別和 wchar_t
的字串全稱為 寬 字串,不過詞彙通常是指類型的字串 wchar_t
。
在 C++ 標準程式庫中,類型 basic_string
會針對窄字串和寬字元串進行特製化。 std::string
當字元的類型 char
為 時, std::u8string
當字元的類型為 時,當 char16_t
字元 char8_t
std::u16string
的類型為 時, std::u32string
當字元的類型為 時,當字元 char32_t
的類型為 時,以及 std::wstring
字元的類型 wchar_t
為 時使用 。 代表文字的其他類型,包括 std::stringstream
和 std::cout
具有窄和寬字元串的特製化。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應