Сравните TCHAR со строковым значением в VC ++? - PullRequest
3 голосов
/ 05 марта 2011

Как сравнить TCHAR со строковым значением в VC ++? Мой проект не Unicode. Я делаю так:

TCHAR achValue[16523] = NULL;
if(achValue == _T("NDSPATH"))
            {
                return FALSE;
            }

Когда achValue = "NDSPATH", это условие также не выполняется.

Любая помощь приветствуется.

1 Ответ

4 голосов
/ 05 марта 2011

TCHAR или любой строковый массив - это просто указатель на первый символ.То, что вы сравниваете, это значение указателя, а не строки.Кроме того, вы присваиваете массиву значение null, что является бессмысленным.

Используйте win32 варианты strcmp .Если вы используете макрос _tcscmp, он будет использовать правильную функцию для многобайтовой / unicode во время компиляции.

#define MAX_STRING 16523;

TCHAR achValue[MAX_STRING];
ZeroMemory(achValue, sizeof(TCHAR) * MAX_STRING);

sprintf(achValue, MAX_PATH, _T("NDSPATH"));

if (!_tcscmp(achValue, _T("NDSPATH"))
{
    // strings are equal when result is 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...