大佬们,我头文件里加了一个在unicode字符集属性下写的算法程序,因为要调用,但是我的工程是多字节字符集,如果我改字符集会出现更多的错误,现在的问题是我怎么才能把这个错误在不更改项目属性的情况下改过来,比如这个wstr是WCHAR*类型的,而FindFirstFile是LPCSTR类型的,还有下面的file是char*类型的,而WChar2Ansi是LPCWSTR类型的,我这段代码该怎么修改,才能不出错,才能让他们可以转换成功,求大佬们帮助,救命啊,小白做毕设抽到了编程类的扛不住啊。附图和代码给诸位大佬。
// 利用winWIN32_FIND_DATA读取文件下的文件名
void readImgNamefromFile(const char* fileName, vector <string> &imgNames)
{
// vector清零 参数设置
imgNames.clear();
WIN32_FIND_DATA file;
int i = 0;
char tempFilePath[MAX_PATH + 1];
char tempFileName[50];
// 转换输入文件名
sprintf_s(tempFilePath, "%s/*", fileName);
// 多字节转换
WCHAR wstr[MAX_PATH] = { 0 };
MultiByteToWideChar(CP_ACP, 0, tempFilePath, -1, wstr, sizeof(wstr));
// 查找该文件待操作文件的相关属性读取到WIN32_FIND_DATA
HANDLE handle = FindFirstFile(
wstr, &file);
if (handle != INVALID_HANDLE_VALUE)
{
FindNextFile(handle, &file);
FindNextFile(handle, &file);
// 循环遍历得到文件夹的所有文件名
do
{
sprintf(tempFileName, "%s", fileName);
imgNames.push_back(WChar2Ansi(
file.cFileName));
imgNames[i].insert(0, tempFileName);
i++;
} while (FindNextFile(handle, &file));
}
FindClose(handle);
}
点击wstr显示Error:“WCHAR*"类型的实参与”LPCSTR“类型的形参不兼容,
点击file显示Error:"CHAR*"类型的实参与”LPCWSTR“类型的形参不兼容。