名稱空間
變體
操作

std::codecvt<InternT,ExternT,StateT>::encoding, do_encoding

來自 cppreference.com
< cpp‎ | locale‎ | codecvt
 
 
 
 
 
定義於標頭檔案 <locale>
(1)
public:
int encoding() const throw();
(C++11 前)
public:
int encoding() const noexcept;
(C++11 起)
(2)
protected:
virtual int do_encoding() const throw();
(C++11 前)
protected:
virtual int do_encoding() const noexcept;
(C++11 起)
1) 公有成員函式,呼叫最派生類的成員函式 do_encoding
2) 如果此 codecvt facet 所表示的編碼將每個內部字元對映到相同且恆定數量的外部字元,則返回該數量。如果編碼是變長的(例如 UTF-8 或 UTF-16),則返回 0。如果編碼是狀態相關的,則返回 -1

[編輯] 返回值

如果常數,則為一個 internT 字元對應 externT 字元的確切數量。如果數量可變,則為 0,如果編碼是狀態相關的,則為 -1

不轉換的特化 std::codecvt<char, char, std::mbstate_t> 返回 1

[編輯] 示例

#include <iostream>
#include <locale>
 
int main()
{
    std::cout << "en_US.utf8 is a variable-length encoding, encoding() returns "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("en_US.utf8")
                 ).encoding() << '\n';
 
    std::cout << "zh_CN.gb18030 is also variable-length, encoding() == "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("zh_CN.gb18030")
                 ).encoding() << '\n';
 
    std::cout << "ru_RU.koi8r is a single-byte encoding, encoding() == "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("ru_RU.koi8r")
                 ).encoding() << '\n';
}

輸出

en_US.utf8 is a variable-length encoding, encoding() returns 0
zh_CN.gb18030 is also variable-length, encoding() == 0
ru_RU.koi8r is a single-byte encoding, encoding() == 1

[編輯] 參閱

MB_CUR_MAX
當前 C 語言環境多位元組字元中的最大位元組數
(宏變數)[編輯]
返回可以轉換為單個 InternT 字元的最大 ExternT 字元數
(虛保護成員函式) [編輯]