【问题标题】:How to open a file using _TCHAR* as a file name? c/c++如何使用 _TCHAR* 作为文件名打开文件? c/c++
【发布时间】:2011-03-19 16:57:44
【问题描述】:

我的主要签名如下:

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

我想执行以下操作:

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

但是存在类型不匹配。我该怎么做? 我应该使用:

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

谢谢!

【问题讨论】:

  • tchar.h 标头是非标准且过时的。不再使用它没有意义,没有非 Unicode 版本的 Windows。今天使用宽版本,_wfopen() 和字符串文字上的 L 前缀。
  • ...并意识到_wfopen 也是非标准的。

标签: c++ c file tchar


【解决方案1】:

用途:

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

不要使用:

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

如果没有定义宏UNICODE,即TCHAR只是char,而不是wchar_t,第二个会报编译错误。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 第二个不太正确。如果TCHAR 只是char 怎么办?据我所知,L"r" 总是让wchar_t
    • 你是对的@Nawaz,但在大多数情况下 TCHAR 是 WCHAR 并且此代码将起作用。否则会出现编译错误,很容易改正。
    • @Mihran:正如我所说,如果TCHARchar 会怎样?您的代码将失败!
    • @Mihran:是的。这就是我要说的:第二个是不正确的!
    • @Mihran:迂腐与此无关。您应该编写代码,使其在这两种情况下都能正常工作。
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多