code_page.hpp

いろいろ利用できそうだったので、コードページの変換処理をHamigaki.Charsetとして独立したライブラリにまとめました。
今日の成果物
とはいえ、実際の処理はWindows APIやiconvが行う他人任せ実装です。
CP〜以外によく使うであろう、「ISO-2022-JP」、「EUC-JP」、「UTF-8」、「UTF-7」にも対応しています。
使い方は単純明快。

#include <hamigaki/charset/code_page.hpp>

// ワイド文字列をISO-2022-JPに変換する
std::string to_jis(const std::wstring& ws)
{
    // 50220はISO-2022-JPのコードページ
    return hamigaki::charset::to_code_page(ws, 50220);
}

う〜ん、引数の順番は逆の方がいいかも。
あと、何気にsizeof(wchar_t)==2の場合のサロゲートペアにも対応しています。(ただし、Windows 2000以前だとダメなはず)