AM Daemon ライブラリリファレンス
クラス | 静的公開メンバ関数 | 静的公開変数類 | 全メンバ一覧
amdaemon::util::Encoding クラス

文字コード変換処理を提供する静的クラス。 [詳解]

#include <Encoding.h>

+ amdaemon::util::Encoding 連携図

クラス

struct  MbcsToUtf8Tag
 マルチバイト文字列からUTF-8文字列への変換を示すタグ構造体。 [詳解]
 
struct  MbcsToWideTag
 マルチバイト文字列からワイド文字列への変換を示すタグ構造体。 [詳解]
 
struct  Utf8ToMbcsTag
 UTF-8文字列からマルチバイト文字列への変換を示すタグ構造体。 [詳解]
 
struct  Utf8ToWideTag
 UTF-8文字列からワイド文字列への変換を示すタグ構造体。 [詳解]
 
struct  WideToMbcsTag
 ワイド文字列からマルチバイト文字列への変換を示すタグ構造体。 [詳解]
 
struct  WideToUtf8Tag
 ワイド文字列からUTF-8文字列への変換を示すタグ構造体。 [詳解]
 

静的公開メンバ関数

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文字列をマルチバイト文字列に変換する。 [詳解]
 

静的公開変数類

static const MbcsToWideTag MbcsToWide
 マルチバイト文字列からワイド文字列への変換を示すタグ。 [詳解]
 
static const WideToMbcsTag WideToMbcs
 ワイド文字列からマルチバイト文字列への変換を示すタグ。 [詳解]
 
static const Utf8ToWideTag Utf8ToWide
 UTF-8文字列からワイド文字列への変換を示すタグ。 [詳解]
 
static const WideToUtf8Tag WideToUtf8
 ワイド文字列からUTF-8文字列への変換を示すタグ。 [詳解]
 
static const MbcsToUtf8Tag MbcsToUtf8
 マルチバイト文字列からUTF-8文字列への変換を示すタグ。 [詳解]
 
static const Utf8ToMbcsTag Utf8ToMbcs
 UTF-8文字列からマルチバイト文字列への変換を示すタグ。 [詳解]
 

詳解

文字コード変換処理を提供する静的クラス。

参照
WinEncoding
覚え書き
  • Windows環境に特化しても問題ない場合は WinEncoding クラスの利用を推奨する。
  • 各メンバ関数の引数 loc を省略しているのであれば、メンバ参照におけるクラス名を "Encoding" から "WinEncoding" に単純置換するだけで動作するようになっている。

C++標準ライブラリを用いた文字コード変換処理を提供する。

静的メンバ関数 convert は、第1引数に変換種別タグ、第2引数に変換元文字列を渡すことで、 C++標準ライブラリ codecvt 等を用いて文字コード変換を行う。 マルチバイト文字列とワイド文字列との間の変換については、 変換種別タグの指定が不要なオーバロードも定義される。

// マルチバイト文字列の "あいうえお" をUTF-8化する
std::string u8aiueo = Encoding::convert(Encoding::MbcsToUtf8, "あいうえお");
// マルチバイト文字列の "あいうえお" をワイド文字列化する
// 変換種別タグ指定不要なオーバロード
std::wstring w_aiueo = Encoding::convert("あいうえお");

また、変換種別タグの指定が不要なラップ関数も用意されている。

// マルチバイト文字列の "あいうえお" をUTF-8化する
std::string u8aiueo = Encoding::convertMbcsToUtf8("あいうえお");

日本語等を扱う場合、各メンバ関数を用いる前に、 std::locale::global 関数を用いて 文字分類(std::locale::ctype)のグローバルロケールを設定しておくこと。

例えば main 関数の冒頭などで下記の関数呼び出しを行うとよい。

// #include <locale> が必要
// グローバルロケールを日本語に設定する
std::locale::global(std::locale(std::locale(), "japanese", std::locale::ctype));
// 既に作成済みの std::wcout はロケールが変更されないので
// メンバ関数 imbue を用いて個別に設定する必要がある
std::wcout.imbue(std::locale());

グローバルロケールを変更することが好ましくない場合、各関数の末尾の引数に std::locale 値を渡すことで直接ロケール指定することもできる。

// #include <locale> が必要
// 日本語ロケールでワイド文字列の L"わをん" をマルチバイト文字列化する
std::string wawon =
L"わをん",
std::locale(std::locale(), "japanese", std::locale::ctype));

ロケールが影響するのはマルチバイト文字列との間の変換のみである。 ワイド文字列とUTF-8文字列との間の変換ではロケールは無視される。

変換できない文字が含まれている場合は変換処理を打ち切って空文字列を返す。 主な失敗理由は次の通り。

関数詳解

static std::wstring amdaemon::util::Encoding::convert ( const std::string &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

マルチバイト文字列をワイド文字列に変換する。

引数
[in]srcマルチバイト文字列。
[in]locロケール設定。
戻り値
ワイド文字列。変換できなかった場合は空文字列。
覚え書き
変換種別タグ指定不要。
static std::string amdaemon::util::Encoding::convert ( const std::wstring &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

ワイド文字列をマルチバイト文字列に変換する。

引数
[in]srcワイド文字列。
[in]locロケール設定。
戻り値
マルチバイト文字列。変換できなかった場合は空文字列。
覚え書き
変換種別タグ指定不要。
static std::wstring amdaemon::util::Encoding::convert ( MbcsToWideTag  tag,
const std::string &  src,
const std::locale &  loc = std::locale() 
)
static

マルチバイト文字列をワイド文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcマルチバイト文字列。
[in]locロケール設定。
戻り値
ワイド文字列。変換できなかった場合は空文字列。
static std::wstring amdaemon::util::Encoding::convertMbcsToWide ( const std::string &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

マルチバイト文字列をワイド文字列に変換する。

引数
[in]srcマルチバイト文字列。
[in]locロケール設定。
戻り値
ワイド文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convert ( WideToMbcsTag  tag,
const std::wstring &  src,
const std::locale &  loc = std::locale() 
)
static

ワイド文字列をマルチバイト文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcワイド文字列。
[in]locロケール設定。
戻り値
マルチバイト文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convertWideToMbcs ( const std::wstring &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

ワイド文字列をマルチバイト文字列に変換する。

引数
[in]srcワイド文字列。
[in]locロケール設定。
戻り値
マルチバイト文字列。変換できなかった場合は空文字列。
static std::wstring amdaemon::util::Encoding::convert ( Utf8ToWideTag  tag,
const std::string &  src,
const std::locale &  loc = std::locale() 
)
static

UTF-8文字列をワイド文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcUTF-8文字列。
[in]locロケール設定。無視される。
戻り値
ワイド文字列。変換できなかった場合は空文字列。
static std::wstring amdaemon::util::Encoding::convertUtf8ToWide ( const std::string &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

UTF-8文字列をワイド文字列に変換する。

引数
[in]srcUTF-8文字列。
[in]locロケール設定。無視される。
戻り値
ワイド文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convert ( WideToUtf8Tag  tag,
const std::wstring &  src,
const std::locale &  loc = std::locale() 
)
static

ワイド文字列をUTF-8文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcワイド文字列。
[in]locロケール設定。無視される。
戻り値
UTF-8文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convertWideToUtf8 ( const std::wstring &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

ワイド文字列をUTF-8文字列に変換する。

引数
[in]srcワイド文字列。
[in]locロケール設定。無視される。
戻り値
UTF-8文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convert ( MbcsToUtf8Tag  tag,
const std::string &  src,
const std::locale &  loc = std::locale() 
)
static

マルチバイト文字列をUTF-8文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcマルチバイト文字列。
[in]locロケール設定。
戻り値
UTF-8文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convertMbcsToUtf8 ( const std::string &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

マルチバイト文字列をUTF-8文字列に変換する。

引数
[in]srcマルチバイト文字列。
[in]locロケール設定。
戻り値
UTF-8文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convert ( Utf8ToMbcsTag  tag,
const std::string &  src,
const std::locale &  loc = std::locale() 
)
static

UTF-8文字列をマルチバイト文字列に変換する。

引数
[in]tag変換種別タグ。
[in]srcUTF-8文字列。
[in]locロケール設定。
戻り値
マルチバイト文字列。変換できなかった場合は空文字列。
static std::string amdaemon::util::Encoding::convertUtf8ToMbcs ( const std::string &  src,
const std::locale &  loc = std::locale() 
)
inlinestatic

UTF-8文字列をマルチバイト文字列に変換する。

引数
[in]srcUTF-8文字列。
[in]locロケール設定。
戻り値
マルチバイト文字列。変換できなかった場合は空文字列。

メンバ詳解

const MbcsToWideTag amdaemon::util::Encoding::MbcsToWide
static

マルチバイト文字列からワイド文字列への変換を示すタグ。

const WideToMbcsTag amdaemon::util::Encoding::WideToMbcs
static

ワイド文字列からマルチバイト文字列への変換を示すタグ。

const Utf8ToWideTag amdaemon::util::Encoding::Utf8ToWide
static

UTF-8文字列からワイド文字列への変換を示すタグ。

const WideToUtf8Tag amdaemon::util::Encoding::WideToUtf8
static

ワイド文字列からUTF-8文字列への変換を示すタグ。

const MbcsToUtf8Tag amdaemon::util::Encoding::MbcsToUtf8
static

マルチバイト文字列からUTF-8文字列への変換を示すタグ。

const Utf8ToMbcsTag amdaemon::util::Encoding::Utf8ToMbcs
static

UTF-8文字列からマルチバイト文字列への変換を示すタグ。


このクラス詳解は次のファイルから抽出されました: