私は変数を持っていますWCHAR sDisplayName[1024];
sDisplayName
文字列「例」が含まれているかどうかを確認するにはどうすればよいですか?
if(wcscmp(sDisplayName, L"example") == 0)
; //then it contains "example"
else
; //it does not
sDisplayName
これは、文字列が "example" で始まる場合や、途中に "example" がある場合には当てはまりません。そのような場合には、 と を使用できwcsncmp
ますwcsstr
。
また、このチェックでは大文字と小文字が区別されます。
また、ガベージが含まれている場合、これは壊れsDisplayName
ます。つまり、null で終了していません。
代わりに std::wstring の使用を検討してください。それがC++のやり方です。
編集:文字列の先頭に一致させたい場合:
if(wcsncmp(sDisplayName, L"Adobe", 5) == 0)
//Starts with "Adobe"
真ん中の文字列を見つけたい場合
if(wcsstr(sDisplayName, L"Adobe") != 0)
//Contains "Adobe"
残りの文字列とは異なり、文字列が見つかった場合、wcsstr はゼロ以外を返すことに注意してください。
wchar_t
標準 C 関数のバリアント(つまり、 )を使用できますwcsstr
。
wscstr は sDisplayName 内の任意の場所にある文字列を検索し、wsccmp は sDisplayName が正確に文字列であるかどうかを確認します。