11

私は変数を持っていますWCHAR sDisplayName[1024];

sDisplayName文字列「例」が含まれているかどうかを確認するにはどうすればよいですか?

4

3 に答える 3

18
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 はゼロ以外を返すことに注意してください。

于 2012-06-28T20:11:06.643 に答える
1

wchar_t 標準 C 関数のバリアント(つまり、 )を使用できますwcsstr

于 2012-06-28T20:11:07.397 に答える
0

wscstr は sDisplayName 内の任意の場所にある文字列を検索し、wsccmp は sDisplayName が正確に文字列であるかどうかを確認します。

于 2012-06-28T20:16:56.057 に答える