0

今私はこのコードを持っていますが、それは常に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が常にnullである理由を説明できますか?

4

1 に答える 1

0

Unicode文字列でマルチバイト文字列を検索しています。使用wcsstr

wchar * cmp = L"Hello";
wcsstr(str.Buffer, cmp);

にキャストしてこれを隠していましたchar *


2番目のリクエストについては、実際に別の質問をする必要がありますが、次のような関数を作成することもできます。

void make_string_lower(WCHAR * str)
{
  while(str[0] != '\0') {
    if(iswalpha(str[0] && !iswlower(str[0]))) {
      str[0] = towlower(str[0]);
    }

    str++;
  }
}

または、を使用します_wcslwr

于 2012-03-11T15:29:36.303 に答える