【问题标题】:Comparing two LPCSTR with ==将两个 LPCSTR 与 == 进行比较
【发布时间】:2014-04-01 19:49:37
【问题描述】:

我发现了一个比较两个 LPCSTR 的实现:

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

问题是它有效。我将其替换为...

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

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

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

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

这动摇了我的整个基础。

【问题讨论】:

    标签: c++ string mfc lpcstr


    【解决方案1】:

    您的第一个示例中的input 可能是CString 实例,并且operator== 的重载采用原始C 样式字符串指针和CString (const CString&),这是正确的字符串比较的事情。

    其实在cstringt.hATL头文件中,可以找到:

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

    【讨论】:

    • 这个!输入是 CStringArray 的一个元素。非常感谢。如果可以的话,我会在几分钟内标记这个。