我该如何解决这个错误?

时间:2011-07-04 06:49:19

标签: c++ visual-c++

#include <windows.h>
#include <iostream>
using namespace std;
int main() {
char* file="d:/tester";
WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
hFind = FindFirstFile(file, &FindFileData);  // line of error says argument of type char* is incompatible with parameter of type LPCWSTR
}

我无法理解错误。它是什么以及如何解决错误?

我正在制作一个控制台应用,需要检查文件是否在目录中。

3 个答案:

答案 0 :(得分:4)

类型LPCWSTR是指向宽字符

的const指针

file中的char* file="d:/tester";是指向普通字符

的指针

普通字符通常使用1字节的内存,而宽字符通常使用2字节。如果文件名包含西里尔字母或日文字母,会发生什么?如果不指定编码,您将无法打开它。 Windows API接受FindFirstFile函数的宽字符,因为文件名可以是unicode。因此,如果您编写L"foo_bar",编译器会将其解释为宽字符串。因此,您可以编写wchar_t* file = L"d:\\tester";来匹配参数类型,因此编译将会成功。

答案 1 :(得分:1)

您正在使用已定义的UNICODE进行编译,并将ANSI字符串作为第一个参数传递。用

替换你生成char *的行

TCHAR * file = TEXT(“d:\ tester”);

事情应该没问题。

马丁

答案 2 :(得分:1)

您正在调用期望宽字符串(FindFirstFileW)的函数。您可以更改文件以使用wchar_t* file = L"d:\\tester";,也可以使用函数FindFirstFileA的ASCII版本。