2014-02-28 59 views
4

我發現,比較兩個LPCSTR執行以下操作的實現:比較兩個LPCSTR與==

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

的問題是,它的工作原理。我用...

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

雖然我現在感覺比較安全。

我只是想知道,如果其他實現只是檢查地址或大小,它是如何工作的?

我檢查了一個LPCSTR的內存地址,它是0x0633522c,另一個是0x028a91a4。

這震動了我的整個基礎。

回答

5

大概input在你的第一個例子是CString實例,並有採取原始C風格的字符串指針和CStringconst CString&),但這字符串比較正確的事情的operator==過載。

事實上,在cstringt.h ATL頭文件,你可以找到:

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

此!輸入是CStringArray的一個元素。非常感謝你。我會在幾分鐘內標記出來。 – Claudiordgz

+0

不客氣! :) –