在进行windows系统的文件目录遍历编程时,遇到FindFirstFile这个函数老是出现 “char*”类型的实参与“LPCWSTR”类型的形参不兼容 的错误提示。代码如下:
#include <iostream>
#include <vector>
#include <windows.h>
using namespace std;
int main()
{
HANDLE h;
char* lpFileName= ".\\data\\*.*";
WIN32_FIND_DATA f;
h=FindFirstFile(lpFileName, &f); //读取第一个文件
if (h == INVALID_HANDLE_VALUE)
{
cout<< "搜索失败" <<endl;
system("pause");
exit(0);
}
cout << f.cFileName << endl;
system("pause");
return 0;
}
该程序的功能是打开.\data文件夹,并且读取该目录下的第一个文件名“.”,并显示。
解决办法
方法一、把工程设置里去掉UNICODE宏定义
项目->XXX属性->配置属性->常规->字符集 , 由使用Unicode字符集 改为 使用多字节字符集
方法二、在程序的开头加上 #undef UNICODE