2011-03-19 86 views
4

我主要有以下特徵:如何使用_TCHAR *作爲文件名打開文件? C/C++

int _tmain(int argc, _TCHAR* argv[]) 

我想瓶坯如下:

FILE *inputFilePtr; 
inputFilePtr = fopen(argv[2], "_r"); 

但有一個類型不匹配。我應該怎麼做? 應該使用:

inputFilePtr = _tfopen(argv[2], ??????); 

謝謝!

+1

tchar.h頭是非標準的和古老的。再也不用使用它了,還沒有Windows的非Unicode版本。今天使用寬版本_wfopen()和字符串文字上的L前綴。 – 2011-03-19 17:13:56

+0

...並認識到'_wfopen'也是非標準的。 – 2011-03-19 17:21:48

回答

0

使用_tfopen(argv[2], TEXT("r"));

_tfopen(argv[2], L"r");如果TCHAR是WCHAR。

+1

第二個不太正確。如果'TCHAR'只是'char'會怎麼樣?就我所知,「L」r「'總是產生'wchar_t'! – Nawaz 2011-03-19 17:02:34

+0

你是對的@Nawaz,但在大多數情況下,TCHAR是WCHAR,此代碼將工作。否則,它會給編譯錯誤,並會很容易地更正。 – 2011-03-19 17:04:25

+0

@Mihran:正如我所說,如果'TCHAR'是'char'呢?你的代碼會失敗! – Nawaz 2011-03-19 17:05:42

6

用途:

_tfopen(argv[2], TEXT("r")); 

不要使用:

_tfopen(argv[2], L"r"); 

第二個將給出編譯錯誤,如果沒有定義的宏UNICODE,即當TCHAR只是char,不wchar_t

相關問題