ホーム < ゲームつくろー! < Programming TIPs編 < STLで日本語ファイルが開けない時の対処法

その8 STLで日本語ファイルが開けない時の対処法


 今回は備忘録です。STLのfstreamで急に日本語ファイルが開けなくなった方はいらっしゃいませんでしょうか?私はVC++6からVC2005に移行した時にはまりました。色々調べてみると、どうやらVC++6の時と2005とのSTLのバージョンの違いが関係しているようです。具体的には、プロジェクトの文字セットが「Unicode設定」になっていない場合はマルチバイト文字をいったんワイド文字に変換してからファイルオープンを試みているようです。この際、マルチバイト文字をワイド文字に変換するための文字列対応表が日本語になっていないため、文字化けファイルパスが生成され、オープンに失敗してしまいます。



@ 対処法

 冒頭に挙げましたように、この問題は対応表を日本語にすると解決します。これは「ロケール」というものを日本語に変更します。何も考えずに、メイン関数の最初に次の一行を追加します:

locale::global(locale("japanese"))

記号のように付けてかまわない一文です。これでうまく行くはずです。

 これでもファイルが開けない場合は、少なくともロケールの問題では無いということなので、他の原因を探ってみてください。