#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
}
我无法理解错误。它是什么以及如何解决错误?
我正在制作一个控制台应用,需要检查文件是否在目录中。
答案 0 :(得分:4)
类型LPCWSTR
是指向宽字符
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版本。