std::codecvt<InternT,ExternT,StateT>::encoding, do_encoding
來自 cppreference.com
定義於標頭檔案 <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 語言環境多位元組字元中的最大位元組數 (宏變數) |
[virtual] |
返回可以轉換為單個 InternT 字元的最大 ExternT 字元數(虛保護成員函式) |