现在我有了这段代码,但它始终设置为null
UNICODE_STRING str;
char *cmp = "Hello";
RtlInitUnicodeString (&str, L"Hello world!");
if( ( strstr((char * )str.Buffer, cmp) ) != NULL)
{
// cmp founded in str.
}
else
{
// cmp not founded in str. Always here, but why??
}
你能解释一下为什么我的案子中的strstr总是空的吗?
答案 0 :(得分:0)
您正在搜索Unicode中的多字节字符串。使用wcsstr
:
wchar * cmp = L"Hello";
wcsstr(str.Buffer, cmp);
您通过强制转换为char *
来隐藏此内容。
你应该为你的第二个请求提出另一个问题,但是你可能会写一个这样的函数:
void make_string_lower(WCHAR * str)
{
while(str[0] != '\0') {
if(iswalpha(str[0] && !iswlower(str[0]))) {
str[0] = towlower(str[0]);
}
str++;
}
}
或者使用_wcslwr
。