■30586 / ) |
日本語ファイル名とcoutでマルバイト文字列出力の並存 |
□投稿者/ dogatana (25回)-(2008/12/27(Sat) 10:17:28)
|
分類:[C/C++]
こんにちは
VC++2005でコンソールアプリを作成し、ファイル処理をしています。 ファイル名は main() の引数から取得しているので、 std::ifstream ifs(argv[1]); としているのですが、ここで No 28731 の問題にぶつかりました。
早速 std::locale::global(std::locale("")); を main() の先頭に入れたのですが、今度は std::cout << argv[1] とか、 読み込んだ日本語を含む文字列リテラルを std::cout に出力することができなくなって しまいました。(実行時画面に表示されないという現象)
急ぎだったので、とりあえずBorland C++でコンパイルして回避しましたが、VC++での回避策をご存知の 方がいらっしゃいますでしょうか?
不思議なことに、標準出力がコンソールのままだと日本語は表示されないのですが、ファイルにリダイ レクションすると内容は正しいですし、パイプで more につなげてやっても正しく表示されます。
|
|