プロが教える店舗&オフィスのセキュリティ対策術

【使用環境】
WinXP, VS2005, C++, "Unicode 文字セットを使用する"設定

現在以下のようなコードを試しているのですが、何故か上手くいきません。
マルチバイトの際にWCHARをcharに置き換えたりした場合はちゃんと
動作したのに何故でしょう・・・。
ヘルプから探してみると、ロケールの設定らしきことが書いてありますが、
サンプルが見つからず苦戦しております。
以下のコードをどのように修正すれば正しく読み込めるようになるのでしょうか・・。

--- コード -------------------------------------------------
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <windows.h>

using namespace std;

// 1行読み込んで返す関数
WCHAR * LoadFile( WCHAR * FilePath ){
 static WCHAR Buf[ 256 ] ={0};
 FILE * fp = _wfopen( FilePath, L"r" );
 fgetws( Buf, 256, fp );
 fclose( fp );
 return Buf;
}

int main(){
 WCHAR * text = LoadFile( L"test.txt" );
 cout << text;
}
--- 読み込むファイルの中身の文字列:test.txt ---------------
aあ
--- 実行結果 -----------------------------------------------
00417178続行するには何かキーを押してください . . .

A 回答 (2件)

UNICODE文字列をcoutに食わせても無理ちゃいますか?


wcoutじゃないと。

この回答への補足

たびたびすみません。
1さんの回答をヒントにヘルプを探ってみると
ファイルの読み込みの前に
_wsetlocale( LC_ALL, L"Japanese");
とすることで日本語も読み込めるようになりました。

しかし、さらに質問なのですが、英語圏の方のPCでこれをやってしまうと
何か問題が発生するようなことは無いでしょうか・・・。
今作っているソフトは海外でも使われる予定のものなので・・・・。

補足日時:2007/12/16 17:37
    • good
    • 0
この回答へのお礼

あっ、なるほど。そういうことでしたか。
ところで、coutの代わりに

MessageBox( NULL, text, NULL, MB_OK );

とした場合、日本語が文字化けしてしまうのですが、こちらは何故なんでしょう・・

お礼日時:2007/12/16 17:30

> 英語圏の方のPCでこれをやってしまうと


> 何か問題が発生するようなことは無いでしょうか・・・。

問題ありそうです。locale-code:"Japanese"が使えないかもしれません。

> MessageBox( NULL, text, NULL, MB_OK );
> とした場合、日本語が文字化けしてしまうのですが、
> こちらは何故なんでしょう・・

たとえばUNICODEモードでコンパイルしていない、とか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!