Сравнение двух LPCSTR с ==

Я обнаружил реализацию, которая сравнивает два LPCSTR, делая следующее:

void check(LPCSTR lpText)
{
if(lpText == input)
{
// do stuff
}
}

Проблема в том, что это работает. Я заменил его на …

if(lstrcmpi(lpText, input) == 0)
{
// do stuff
}

и хотя сейчас я чувствую себя в большей безопасности.

Я просто хотел узнать, проверяет ли другая реализация адреса или размеры, как это работает?

Я проверил адрес памяти одного LPCSTR, и это 0x0633522c, а другой 0x028a91a4.

Это потрясает весь мой фундамент.

4

Решение

Наверное input в вашем первом примере это CString экземпляр, и есть перегрузка operator== взять необработанный указатель строки в стиле C и CString (const CString&), это правильно сравнивает строки.

На самом деле, в cstringt.h Заголовочный файл ATL вы можете найти:

friend bool operator==(
_In_z_ PCXSTR psz1,
_In_ const CStringT& str2) throw()
{
return( str2.Compare( psz1 ) == 0 );
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]