0

我正在使用 Visual Studio C++ 并在我的程序中使用这些行。
每当我输入 Get status 时,输出都不是“好”。输出将始终是独立于 Cstring strText 的“无效命令”。前两个条件都不行。

请帮助。它应该根据输入 strText 工作。

         if ( strText == _T("Get status") )
     { 
                     MessageBox(_T("Good")); 


     }
         else if ( strText == _T("change") )
     {
         MessageBox(_T("Bad")); 
     }
     else 
         {
             MessageBox(_T("Invalid Command")); 
         }
4

1 回答 1

0

CString::operator==执行区分大小写的精确匹配。如果大小写或空格不匹配,则字符串将进行不同的比较。我不知道你的情况是什么问题。也许您可以添加L"[" + strText + L"]"到您的消息框中,看看是否有一些您忽略的空白。

事实上,尽管 CString 声称支持 Unicode,但它并不支持。形式上相同但规范化不同的两个 Unicode 字符串被认为是不同的。L"ë"可能不等于L"ë",根据CString一个是否标准化而另一个不是。Windows 有CompareStringExAPI,它是字符串比较的瑞士军刀,可以处理这些细节。

于 2012-09-10T15:12:41.513 回答