strcmp и wcscmp - PullRequest
       5

strcmp и wcscmp

1 голос
/ 25 июля 2010

Это

if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
    (wcscmp(FileData.cFileName, L".") != 0) &&
    (wcscmp(FileData.cFileName, L"..") != 0) )

так же, как это:

if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
    wcscmp(FileData.cFileName, L".") &&
    wcscmp(FileData.cFileName, L"..") )

А также если вы используете strcmp вместо wcscmp? Следует проверить равенство (строгое) имени с ".." и "." (поиск в каталоге).

Спасибо!

Ответы [ 2 ]

4 голосов
/ 25 июля 2010

Если я не ошибаюсь, оба примера делают одно и то же.

3 голосов
/ 25 июля 2010

В C "true" определяется как "не ноль". «ложь» определяется как «ноль». Так что да, они одинаковы.

Будьте осторожны с методами, которые возвращают не примитивные типы; в C ++ перегрузка операторов может привести к тому, что "! = 0" не сравнит что-либо с нулем :-P. Хотя здесь нет проблем.

Кроме того, если вы не ставите скобки, убедитесь, что вы понимаете порядок операций.

...