std::locale::global() でも症状は改善するけど、数値の出力にカンマが入るようになったり、
副作用が大きい。問題が発生するのは、 fstream の open() の中で勝手に
mbstowcs() を使って変換するせいなので、 setlocale(LC_CTYPE, "") とすれば
十分だったはず。