名稱空間
變體
操作

空終止多位元組字串

來自 cppreference.com
< cpp‎ | string

以空字元結尾的多位元組字串(NTMBS),或稱“多位元組字串”,是由非零位元組序列後跟一個值為零的位元組(終止空字元)組成。

字串中儲存的每個字元可能佔用多個位元組。用於表示多位元組字串中字元的編碼是與區域設定相關的:它可以是 UTF-8、GB18030、EUC-JP、Shift-JIS 等。例如,字元陣列 {'\xe4','\xbd','\xa0','\xe5','\xa5','\xbd','\0'} 是一個 NTMBS,在 UTF-8 多位元組編碼中儲存著字串 "你好":前三個位元組編碼字元 你,後三個位元組編碼字元 好。在 GB18030 中編碼的相同字串是字元陣列 {'\xc4', '\xe3', '\xba', '\xc3', '\0'},其中兩個字元都編碼為兩位元組序列。

在某些多位元組編碼中,任何給定的多位元組字元序列都可以根據之前的位元組序列(稱為“移位序列”)表示不同的字元。這種編碼被稱為狀態依賴型:解釋每個字元需要了解當前的移位狀態。NTMBS 僅在其以初始移位狀態開始和結束時才有效:如果使用了移位序列,則在終止空字元之前必須存在相應的非移位序列。此類編碼的示例包括 7 位 JIS、BOCU-1 和 SCSU

多位元組字串與以空字元結尾的位元組字串(NTBS)是佈局相容的,也就是說,可以使用相同的設施進行儲存、複製和檢查,只是計算字元數除外。如果使用了正確的區域設定,I/O 函式也能處理多位元組字串。多位元組字串可以使用 std::codecvt 成員函式、std::wstring_convert 或以下與區域設定相關的轉換函式在寬字串之間進行轉換:

目錄

[編輯] 函式

多位元組/寬字元轉換
定義於標頭檔案 <cstdlib>
返回下一個多位元組字元的位元組數
(函式) [編輯]
將下一個多位元組字元轉換為寬字元
(函式) [編輯]
將寬字元轉換為其多位元組表示
(函式) [編輯]
將窄多位元組字元字串轉換為寬字串
(函式) [編輯]
將寬字串轉換為窄多位元組字元字串
(函式) [編輯]
在標頭檔案 <cwchar> 中定義
返回下一個多位元組字元的位元組數,給定狀態
(函式) [編輯]
檢查 std::mbstate_t 物件是否表示初始移位狀態
(函式) [編輯]
如果可能,將單位元組窄字元加寬為寬字元
(函式) [編輯]
如果可能,將寬字元縮小為單位元組窄字元
(函式) [編輯]
將下一個多位元組字元轉換為寬字元,給定狀態
(函式) [編輯]
將寬字元轉換為其多位元組表示,給定狀態
(函式) [編輯]
將窄多位元組字元字串轉換為寬字串,給定狀態
(函式) [編輯]
將寬字串轉換為窄多位元組字元字串,給定狀態
(函式) [編輯]
定義於標頭檔案 <cuchar>
(C++20)
將窄多位元組字元轉換為 UTF-8 編碼
(函式) [編輯]
(C++20)
將 UTF-8 字串轉換為窄多位元組編碼
(函式) [編輯]
(C++11)
將窄多位元組字元轉換為 UTF-16 編碼
(函式) [編輯]
(C++11)
將 UTF-16 字元轉換為窄多位元組編碼
(函式) [編輯]
(C++11)
將窄多位元組字元轉換為 UTF-32 編碼
(函式) [編輯]
(C++11)
將 UTF-32 字元轉換為窄多位元組編碼
(函式) [編輯]

[編輯] 型別

在標頭檔案 <cwchar> 中定義
迭代多位元組字串所需的轉換狀態資訊
(類) [編輯]

[編輯]

在標頭檔案 <climits> 中定義
MB_LEN_MAX
多位元組字元中的最大位元組數
(宏常量) [編輯]
定義於標頭檔案 <cstdlib>
MB_CUR_MAX
當前 C 語言環境多位元組字元中的最大位元組數
(宏變數)[編輯]
定義於標頭檔案 <cuchar>
__STDC_UTF_16__
(C++11)
表示 mbrtoc16 和 c16rtomb 使用 UTF-16 編碼
(宏常量)
__STDC_UTF_32__
(C++11)
表示 mbrtoc32 和 c32rtomb 使用 UTF-32 編碼
(宏常量)

[編輯] 另請參閱

C 文件 用於 以空字元結尾的多位元組字串
English 日本語 中文(简体) 中文(繁體)