将两个 LPCSTR 与 == 进行比较



我发现了一个实现,它比较了两个执行以下操作的LPCSTR:

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

问题是它有效。我把它换成了...

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

虽然我现在感觉更安全了。

我只想知道另一个实现是否只是检查地址或大小,它是如何工作的?

我检查了一个LPCSTR的内存地址,它是0x0633522c的,另一个是0x028a91a4的。

这动摇了我的整个根基。

可能input在你的第一个示例中是一个CString实例,并且有一个重载operator==采用原始 C 样式的字符串指针和一个CStringconst CString& ),这执行了字符串比较的正确操作。

实际上,在cstringt.h ATL头文件中,您可以找到:

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

相关内容

  • 没有找到相关文章

最新更新