現在、VC++2005にて、MFCを利用したアプリケーションを マルチバイト文字セット → ユニコード文字セット(_UNICODE)に移植しております。
そのアプリケーションの中で、CStdioFile::WriteString()を呼んだところ、全角文字が出力されないという問題に遭遇しました。その問題は有名なようで、ネットサーフィンの結果、すぐに解決方法が見つかりました。
その解決方法というのが、アプリケーションの初期化時に setlocale(LC_CTYPE , "") を実行することでした。
これで、当初の問題は解決したのですが、
以下のようなコードを実行したときに、
CString strTest;
strTest.Format(_T("%10s"), _T("あいう"));
以下のようにstrTestに格納されます。
[ あいう] ← 全角文字も1文字と数えて10文字幅
既存のソースコードが、
[ あいう] ← 全角文字は2文字と数えて10文字幅
を期待しているので、修正したいのですが、自分で文字数を数えてバリバリとハードコーディングするしかないのでしょうか?