• 締切済み

c++ TCHARで文字化け

TCHARはUNICODEが扱えるときいたので早速つかってみた。以下は引数を表示するプログラムである。 Visual C++ Express Editionを使った。 #include <stdio.h> #include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) { int i=0; while(i<argc){ _tprintf(_T("%s\r\n"),argv[i++]); } return 0; } しかし上記プログラムに日本語の引数をわたすと文字化けするではないか。なでしょうか?

みんなの回答

回答No.1

Unicodeを使うならTCHARではなくwchar_t系を使うべきだと思いますが……。 # VC++の場合。 > しかし上記プログラムに日本語の引数をわたすと文字化けするではないか。 setlocaleしていないのですから,当然の動作です。 ワイド文字列のストリームへの出力はfputwcを使ったかの如くなされ,fputwcはwcrtombで変換したのと同等の文字列を出力します。 # ISO/IEC 9899:1999 7.19.3 Files / Paragraph.12 そして,wcrtombのはLC_CTYPEカテゴリの現在のロケールに依存します。 # ISO/IEC 9899:1999 7.24.6 Extended multibyte/wide character conversion utilities / Paragraph. 2

noname#97178
質問者

お礼

どうも。解決しました。 #include <stdio.h> #include <tchar.h> #include <locale.h> int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, "Japanese"); int i=0; while(i<argc){ _tprintf(_T("%s\r\n"),argv[i++]); } return 0; }

関連するQ&A