您遇到的问题来自这样一个事实:该strstr
函数希望将两个char
指针 ( char *
) 作为其参数,但它接收WCHAR
数组而不是作为第一个参数。
与通常的 8 位 char 不同,它WCHAR
表示 16 位 Unicode 字符。
修复错误的一种方法是将 Unicode 文件名转换为 char 数组,如下所示:
char cfile[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP, 0, file, -1, cfile, 260, &DefChar, NULL);
然后使用cfile
代替file
.
但是这种方法只适用于 ASCII 字符。
因此,您可以考虑使用另一种适合WCHAR
字符串 ( wstring
) 的字符串比较方法。
以下代码可能会帮助您使用第二种方法:
// Initialize the wstring for file
std::wstring wsfile (file);
// Initialize the string for str
std::string sstr(str);
// Initialize the wstring for str
std::wstring wstr(sstr.begin(), sstr.end());
// Try to find the wstr in the wsfile
int index = wsfile.find(wstr);
// Check if something was found
if(index != wstring::npos) {
return 1;
}
关于在 std :: wstringfind
中使用方法的好答案。std::wsting
更多关于转换string
为wstring
:Mijalko:将 std::string 转换为 std::wstring。
如果没有帮助,请在评论中留下一些反馈。