C++で wstring を使って2バイト文字と1バイト文字を統一的に扱うには, mbstowcs(3) を使って const char * から wchar_t * に変換して, wstring に 格納するのが普通なのだと思う。 さらに iconv(3) で明示的にコード変換をする手もあるが, そこはロケールにお任せ することにして, wstring には EUC がそのまま入っているのだと思っていた。 ..ところが, wchar_t「あ」の中身を表示してみると, A4A2ではなく, 42 30という 謎のコードが。泉谷君に相談して二人で調べてみると, どうも wchar_t の中身は いつの間にかUTF-16になっているらしい。(!) 検索してもそんな話は全然ないし, mbstowcs(3) の中にも書いていないのですが, ロケールは入力コードを指定するために使われるのであって, 内