• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:_TCHAR*での引数の読み込み)

_TCHAR*での引数の読み込み:VC++2010での通常の引数の使い方

このQ&Aのポイント
  • VC++2010で、_TCHAR*型の引数を使って引数の読み込みを行いたい場合、ウィザードによる通常のC言語の引数の使い方とは異なる方法が必要です。
  • ウィザードを使った場合、引数の型が_TCHAR*になりますが、文字列をそのまま使うことはできません。
  • 代わりに、_tprintf関数を使ってフォーマット文字列を作成し、%sの部分に引数を指定することで、引数の内容を表示することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kabe64
  • ベストアンサー率72% (13/18)
回答No.2

#1の補足への補足。 リテラル文字列を文字セットに対応させるマクロがあります。 _T(__FILE__) のように_T()で囲ってしまえばいいですよ。

tmiyoshi
質問者

補足

一応、下記でできるようになりました。 補足とかありましたら、お願い致します。 #include "stdafx.h" #include <stdio.h> //#include <tchar.h> #include <locale.h> int _tmain(int argc, _TCHAR* argv[]) //int _tmain(int argc, wchar_t* argv[]) { setlocale(LC_ALL, "japanese"); wprintf(L"%s\n", argv[1]); FILE *fp; fp = _wfopen(argv[1], L"r"); if(fp == NULL) { fwprintf(stderr, L"%s,%d ファイル%sがありません\n", _T(__FILE__),__LINE__,argv[1]); return 1; } return 0; } ありがとうございました。

その他の回答 (1)

  • kabe64
  • ベストアンサー率72% (13/18)
回答No.1

プロジェクトプロパティの全体 - 文字セットを"マルチバイト文字セットを使用する"にすれば_TCHARはcharと同じになります。 デフォルトはUnicodeになっていますので、もしUnicodeのまま使いたい場合はprintf等の関数の方をwprintf等のwchar_t型を使用するものに置き換えましょう。 _TCHARのように頭に_Tが付いてるものは文字セットによって中身が切り替わるようになっています。 printfなら_tprintf、fopenなら_tfopenが対で存在します。 この辺はprintf等のヘルプにも記載されてますよ。

tmiyoshi
質問者

補足

情報ありがとうございます。 ちょっと調べて下記(デフォルトのUnicode)でやってみたのですが、 #include "stdafx.h" #include <stdio.h> //#include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) { wprintf(L"%s\n", argv[1]); FILE *fp; fp = _wfopen(argv[1], L"r"); if(fp == NULL) { fwprintf(stderr, L"%s,%d ファイル%sがありません\n", __FILE__,__LINE__,argv[1]); return 1; } return 0; } (結果) test.txt ?????????????????????????????????,16 になってしまいます。漢字の変換とか、__FILE__の多分特殊文字の変換がうまくいってないような のですが、他に何か設定しないといけないものってあるのでしょうか? 分かれば教えてください。

関連するQ&A

専門家に質問してみよう