将两个LPCSTR与==进行比较

Cla*_*dgz 4 c++ string mfc lpcstr

我找到了一个比较两个LPCSTR执行以下操作的实现:

void check(LPCSTR lpText)
{
    if(lpText == input)
    {
         // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

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

if(lstrcmpi(lpText, input) == 0)
{
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

虽然我觉得现在更安全.

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

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

这震撼了我的整个基础.

Mr.*_*C64 5

可能input在你的第一个例子中是一个CString实例,并且有一个重载operator==采用原始的C风格的字符串指针和a CString(const CString&),它做了正确的字符串比较.

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

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