std::codecvt<InternT,ExternT,State>::encoding, do_encoding
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| ヘッダ <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) public メンバ関数。 最も派生したクラスのメンバ関数
do_encoding を呼びます。2) この codecvt ファセットによって表されるエンコーディングが各内部文字を同じ一定個数の外部文字にマップする場合は、その個数を返します。 エンコーディングが可変長 (UTF-8 や UTF-16 など) の場合は、
0 を返します。 エンコーディングが状態依存の場合は、 -1 を返します。戻り値
一定の場合は、ひとつの internT 文字に対応する externT 文字の正確な個数。 個数が可変の場合は 0。 エンコーディングが状態依存の場合は -1。
変換しない std::codecvt<char, char, std::mbstate_t> の特殊化は 1 を返します。
例
Run this code
#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) |
[仮想] |
単一の internT 文字に変換される可能性のある externT の最大文字数を返します (仮想プロテクテッドメンバ関数) |