gpt4 book ai didi

c++ - strstr - string.h 通讯错误错误?

转载 作者:行者123 更新时间:2023-11-30 17:37:38 25 4
gpt4 key购买 nike

我试图将文件名与字符串列表进行比较,看看它们是否匹配,如果匹配则相应地返回

我使用以下条件:

if (strstr(file, str) != NULL) {
return 1;
}

尽管 MSVC++2012 在 strstr 上提示我以下错误:

Error: no instance of overloaded function "strstr" matches the argument list
argument types are: (WCHAR [260], char *)

问题是:上面的错误是什么意思以及如何修复?

最佳答案

您遇到的问题来自于 strstr函数期望看到两个 char 指针 (char *) 作为其参数,但它接收 WCHAR 数组作为第一个参数。

与通常的 8 位字符不同,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::wsting 中使用 find 方法的好答案:Find method in std::wstring .

有关将 string 转换为 wstring 的更多信息:Mijalko: Convert std::string to std::wstring .

如果没有帮助,请在评论中留下一些反馈。

关于c++ - strstr - string.h 通讯错误错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com