|
static std::wstring | convert (const std::string &src, const std::locale &loc=std::locale()) |
| マルチバイト文字列をワイド文字列に変換する。 [詳解]
|
|
static std::string | convert (const std::wstring &src, const std::locale &loc=std::locale()) |
| ワイド文字列をマルチバイト文字列に変換する。 [詳解]
|
|
static std::wstring | convert (MbcsToWideTag tag, const std::string &src, const std::locale &loc=std::locale()) |
| マルチバイト文字列をワイド文字列に変換する。 [詳解]
|
|
static std::wstring | convertMbcsToWide (const std::string &src, const std::locale &loc=std::locale()) |
| マルチバイト文字列をワイド文字列に変換する。 [詳解]
|
|
static std::string | convert (WideToMbcsTag tag, const std::wstring &src, const std::locale &loc=std::locale()) |
| ワイド文字列をマルチバイト文字列に変換する。 [詳解]
|
|
static std::string | convertWideToMbcs (const std::wstring &src, const std::locale &loc=std::locale()) |
| ワイド文字列をマルチバイト文字列に変換する。 [詳解]
|
|
static std::wstring | convert (Utf8ToWideTag tag, const std::string &src, const std::locale &loc=std::locale()) |
| UTF-8文字列をワイド文字列に変換する。 [詳解]
|
|
static std::wstring | convertUtf8ToWide (const std::string &src, const std::locale &loc=std::locale()) |
| UTF-8文字列をワイド文字列に変換する。 [詳解]
|
|
static std::string | convert (WideToUtf8Tag tag, const std::wstring &src, const std::locale &loc=std::locale()) |
| ワイド文字列をUTF-8文字列に変換する。 [詳解]
|
|
static std::string | convertWideToUtf8 (const std::wstring &src, const std::locale &loc=std::locale()) |
| ワイド文字列をUTF-8文字列に変換する。 [詳解]
|
|
static std::string | convert (MbcsToUtf8Tag tag, const std::string &src, const std::locale &loc=std::locale()) |
| マルチバイト文字列をUTF-8文字列に変換する。 [詳解]
|
|
static std::string | convertMbcsToUtf8 (const std::string &src, const std::locale &loc=std::locale()) |
| マルチバイト文字列をUTF-8文字列に変換する。 [詳解]
|
|
static std::string | convert (Utf8ToMbcsTag tag, const std::string &src, const std::locale &loc=std::locale()) |
| UTF-8文字列をマルチバイト文字列に変換する。 [詳解]
|
|
static std::string | convertUtf8ToMbcs (const std::string &src, const std::locale &loc=std::locale()) |
| UTF-8文字列をマルチバイト文字列に変換する。 [詳解]
|
|
文字コード変換処理を提供する静的クラス。
- 参照
- WinEncoding
- 覚え書き
- Windows環境に特化しても問題ない場合は WinEncoding クラスの利用を推奨する。
- 各メンバ関数の引数 loc を省略しているのであれば、メンバ参照におけるクラス名を "Encoding" から "WinEncoding" に単純置換するだけで動作するようになっている。
C++標準ライブラリを用いた文字コード変換処理を提供する。
静的メンバ関数 convert は、第1引数に変換種別タグ、第2引数に変換元文字列を渡すことで、 C++標準ライブラリ codecvt 等を用いて文字コード変換を行う。 マルチバイト文字列とワイド文字列との間の変換については、 変換種別タグの指定が不要なオーバロードも定義される。
また、変換種別タグの指定が不要なラップ関数も用意されている。
日本語等を扱う場合、各メンバ関数を用いる前に、 std::locale::global 関数を用いて 文字分類(std::locale::ctype)のグローバルロケールを設定しておくこと。
例えば main 関数の冒頭などで下記の関数呼び出しを行うとよい。
std::locale::global(std::locale(std::locale(), "japanese", std::locale::ctype));
std::wcout.imbue(std::locale());
グローバルロケールを変更することが好ましくない場合、各関数の末尾の引数に std::locale 値を渡すことで直接ロケール指定することもできる。
std::string wawon =
L"わをん",
std::locale(std::locale(), "japanese", std::locale::ctype));
ロケールが影響するのはマルチバイト文字列との間の変換のみである。 ワイド文字列とUTF-8文字列との間の変換ではロケールは無視される。
変換できない文字が含まれている場合は変換処理を打ち切って空文字列を返す。 主な失敗理由は次の通り。
- テキストとして不正な文字列を変換しようとした。
- Unicodeにしかない文字(♥ 等)をマルチバイト文字列に変換しようとした。