• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プラスが文字化け)

文字化け対策について

このQ&Aのポイント
  • CStdioFileクラスを使用してのファイル出力で文字化けする問題について
  • Windows XP (32bit)およびVisual C++ 2005での開発環境において、CStdioFileクラスを使用してファイルに書き込む際に文字化けが発生します。
  • 文字化けを回避するためには、Unicodeエンコードを使用するか、マルチバイト文字セットではなくユニコード文字セットを選択する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

>・マルチバイト文字セット これが原因のような気がします。 file.Write(str, str.GetLength()); こちらは、バイト単位の書き込みになります。 file.WriteString(str); こちらは文字列の終端文字\0まで書き込みます。 CStdioFile のメソッドなので、後者を用いるほうが良いと思います。

参考URL:
http://msdn.microsoft.com/ja-jp/library/vstudio/k1kysdae(v=vs.80).aspx
pierrot55
質問者

お礼

お礼が遅くなってしまい大変申し訳ありません! 質問した時点からだいぶ時間が経過していたので気付きませんでした…。 CStdioFile::WriteString関数を使うと終端文字まで 書き込んでくれるんですね。 勉強になりました。 ただ、残念ながら今回のケースでCStdioFile::WriteString関数に変更しても 現象は変わりませんでした…。 ちなみに、その後どうなったかの経過をご報告させて頂きます。 1. 他の人にチェックしてもらおうと思いソースを渡したところ、  その方のPC環境では再現せず。  (期待通り"0.000e+000"と表示) 2. 更に別の方のPC環境でも再現せず。 3. 結局原因が特定出来なかったため仕様自体を変更。  (科学記法を使用するのを廃止) 改めて、回答ありがとうございました!

関連するQ&A