如何比较LPCSTR



我已经尝试过strcmp和lstrcmp。我甚至试着用strlen做这件事,但也没有成功,这是我的

void check(LPCSTR lpText)
{
if( strmp(lpText, "test") == 0)
{
MessageBoxW(0, L"equal", 0, 0); 
}
else
{
MessageBoxW(0, L"not equal", 0, 0); 
}
}

不管怎样,它总是返回1,如果重要的话,设置中的字符集也设置为使用多字节字符集。

如果使用宽字符串,请尝试将其与宽字符串文字进行比较:

if (lstrcmp(lpText, L"test") == 0) {
// stuff
}

编辑:似乎您使用了错误的字符编码。

老问题,但对于像我这样的一些学习者来说。

如果使用unicode设置,则LPCTSTR(此处,"T"表示根据是否定义unicode而变化)为const wchar_t *,因此wcscmp可用于比较两个LPCTSTR

int wcscmp(
const wchar_t *string1,
const wchar_t *string2
);

例如,

// myStr is LPCTSTR
if (wcscmp(myStr, _T("mytext")) == 0) { // _T makes this to L"mytext" (if unicode).
// myStr == "mytext"
}

(仅供参考,如果不是unicode,则LPCTSTRconst char*)

或者,如果使用CString(MFC项目),那么只有==可以工作,这相当于CStringT::Compare。它会自动注意到你是否使用UNICODE。

参考文献(MSDN):1 2 3

相关内容

  • 没有找到相关文章

最新更新