昨日書いた文字列コード変換のこと・・・

mbstate_t state;
と書いたよね。それじゃだめです。
よくみると、このmbstate_tはただのintです。
構造関数がありません。
ローカル変数なので初期化しなければならない。
おかしい変換結果になるよ。
だから
mbstate_t state = 0;
と書けばいい。デフォルトの値はどこで定義するのはまだわからないなので0に決まる・・・