2011-03-19 124 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

相关问题