名前空間
変種
操作

std::codecvt::encoding, do_encoding

提供: cppreference.com
< cpp‎ | locale‎ | codecvt
 
 
 
 
ヘッダ <locale> で定義
public:
int encoding() const;
(1)
protected:
virtual int do_encoding() const;
(2)
1) public メンバ関数。 最も派生したクラスのメンバ関数 do_encoding を呼びます。
2) この codecvt ファセットによって表されるエンコーディングが各内部文字を同じ一定個数の外部文字にマップする場合は、その個数を返します。 エンコーディングが可変長 (UTF-8 や UTF-16 など) の場合は、 0 を返します。 エンコーディングが状態依存の場合は、 -1 を返します。

目次

[編集] 戻り値

一定の場合は、ひとつの internT 文字に対応する externT 文字の正確な個数。 個数が可変の場合は 0。 エンコーディングが状態依存の場合は -1

変換しない std::codecvt<char, char, std::mbstate_t> の特殊化は 1 を返します。

[編集] 例外

(なし) (C++11未満)
noexcept 指定:  
noexcept
  
(C++11以上)

[編集]

#include <locale>
#include <iostream>
 
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文字の最大文字数
(macro variable) [edit]
単一の internT 文字に変換される可能性のある externT の最大文字数を返します
(仮想プロテクテッドメンバ関数) [edit]