0

私はVisual Studio C ++に取り組んでおり、プログラムでこれらの行を使用しています。
Get status と入力するたびに、出力は「良好」ではありません。Cstring strText に関係なく、出力は常に「無効なコマンド」になります。最初の 2 つの条件が機能していません。

親切に助けてください。入力 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をサポートしていると主張していますが、サポートしていません。正式には同一であるが、正規化が異なる2つのUnicodeストリンは、別個のものと見なされます。一方が正規化され、もう一方が正規化されていないかどうかに応じて、にL"ë"等しくない場合があります。WindowsにはAPIがあります。これは、文字列比較のスイスアーミーナイフであり、そのような詳細を処理できます。L"ë"CStringCompareStringEx

于 2012-09-10T15:12:41.513 に答える