我已经尝试过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,则LPCTSTR
为const char*
)
或者,如果使用CString
(MFC项目),那么只有==
可以工作,这相当于CStringT::Compare
。它会自动注意到你是否使用UNICODE。
参考文献(MSDN):1 2 3