我正在visual studio c++上工作,并在程序中使用这些行
每当我键入Get status时,输出都不是"Good"。输出将始终是独立于Cstring strText的"无效命令"。前两个条件不起作用。
请帮忙。它应该根据输入strText进行操作。
if ( strText == _T("Get status") )
{
MessageBox(_T("Good"));
}
else if ( strText == _T("change") )
{
MessageBox(_T("Bad"));
}
else
{
MessageBox(_T("Invalid Command"));
}
CString::operator==
执行完全区分大小写的匹配。如果大小写或空格不匹配,那么字符串的比较会有所不同。我不知道你的情况出了什么问题。也许您可以将L"[" + strText + L"]"
添加到您的消息框中,看看是否有您忽略的空白。
事实上,尽管CString声称支持Unicode,但事实并非如此。两个形式上相同但规范化不同的Unicode strigns被认为是不同的。根据CString
,如果一个被归一化而另一个不被归一化,则L"ë"
可能不等于L"ë"
。Windows有CompareStringEx
API,它是字符串比较的快捷刀,可以处理这些细节。