名前空間
変種
操作

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

From 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ファセットによって表されるエンコーディングが、各内部文字を同じ一定数の外部文字にマッピングする場合、その数を返します。エンコーディングが可変長(例:UTF-8またはUTF-16)の場合、0を返します。エンコーディングが状態依存の場合、-1を返します。

[編集] 戻り値

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ロケールにおけるマルチバイト文字の最大バイト数
(マクロ変数)[編集]
1つの InternT 文字に変換できる ExternT 文字の最大数を返します。
(virtual protected member function) [編集]
English 日本語 中文(简体) 中文(繁體)