2012-03-12 18 views
3

wcsstrの使用方法を知っている人はいませんか?これが重要なら、私はカーネルドライバでそれを使用します。Wcsstrの大文字と小文字の区別

+0

このライブラリ関数呼び出しでは、どの部分が応答する必要がありますか? –

+0

[some](http://www.daniweb.com/software-development/c/code/216564)[examples](http://www.codeguru.com/cpp/cpp/string/article.php)/c5641)を正しく検索してください。私がwhcar_tを使って見つけたわけではありませんが、それを修正するのは難しいことではありません。 –

答えて

4

Windowsでプログラミングする場合は、StrStrI()機能を使用できます。

カーネルドライバでは使用できないため、write it by your ownにする必要があります。この例ではtoupper()が使用されており、RtlUpcaseUnicodeChar(Rupが指摘しているように)で置き換える必要があります。要約すると、次のようなものが必要です。

char *stristr(const wchar_t *String, const wchar_t *Pattern) 
{ 
     wchar_t *pptr, *sptr, *start; 

     for (start = (wchar_t *)String; *start != NUL; ++start) 
     { 
      while (((*start!=NUL) && (RtlUpcaseUnicodeChar(*start) 
        != RtlUpcaseUnicodeChar(*Pattern)))) 
      { 
       ++start; 
      } 

      if (NUL == *start) 
        return NULL; 

      pptr = (wchar_t *)Pattern; 
      sptr = (wchar_t *)start; 

      while (RtlUpcaseUnicodeChar(*sptr) == RtlUpcaseUnicodeChar(*pptr)) 
      { 
        sptr++; 
        pptr++; 

        if (NUL == *pptr) 
         return (start); 
      } 
     } 

     return NULL; 
} 
+0

['StrStrI'](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773439.aspx)はshlwapiにあり、カーネルドライバでは使用できません。しかし、はい、あなた自身のコードはおそらくここでは使用できないと思われますが、おそらくこれはやり方です。 – Rup

+0

実際に私はそれを取り戻します - ['RtlUpcaseUnicodeChar'](http://msdn.microsoft.com/en-us/library/windows/hardware/ff563003.aspx) – Rup

関連する問題