如何搜索LPWSTR类型字符串中的子串?有哪些可用的对应函数?
问题解答
你编写的代码无法正常编译运行,原因如下:
LPWSTR本质是wchar_t*类型的C风格宽字符指针,不属于C++标准库类,不存在find成员方法- 你用到的
std::string::npos是窄字符字符串的常量,和宽字符场景不兼容
可用的子串搜索方案
方案1:转换为std::wstring后使用find方法
如果不排斥使用C++标准库字符串类,可以先把LPWSTR转为std::wstring,直接调用内置的find方法:
#include <string> LPWSTR a_string = _T("abcdef"); std::wstring wstr(a_string); if (wstr.find(L"def") != std::wstring::npos) { // 匹配到子串后的逻辑 }
方案2:使用C标准库的wcsstr函数
无需引入C++字符串类,直接调用宽字符串专用的子串搜索函数wcsstr即可:
#include <wchar.h> LPWSTR a_string = _T("abcdef"); // wcsstr返回指向第一个匹配子串的指针,未匹配到返回NULL if (wcsstr(a_string, L"def") != NULL) { // 匹配到子串后的逻辑 }
方案3:使用Win32 API的StrStrW函数
如果是Windows平台开发,也可以使用Win32提供的字符串搜索接口:
#include <shlwapi.h> // 需链接shlwapi库 #pragma comment(lib, "shlwapi.lib") LPWSTR a_string = _T("abcdef"); if (StrStrW(a_string, L"def") != NULL) { // 匹配到子串后的逻辑 }
内容的提问来源于stack exchange,提问作者user14761342
相关产品推荐
相关产品推荐

