C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 54 を表示中)
■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 につなげてやっても正しく表示されます。

返信 編集キー/


管理者用

- Child Tree -