2011-01-13 21 views
1

これは正しい方法ですか?結果ポインタがあなたの翻訳された文字列へのポインタと同じであるかどうかを比較し== - 私はそれが適切にIFが正しく動作しない

CString result; 
result = ExecuteExternalProgram(L"c.txt", L"t.txt"); // return a CString 

if (result == _T("one")) 
    MessageBox(NULL,result.GetBuffer(), L"one", MB_OK); 
else 
     MessageBox(NULL,result.GetBuffer(), L"two", MB_OK); 
+0

結果は「1」ですが、最初の状態にはなりません。常にELSEにジャンプします。 – karikari

答えて

1

C文字列が==と比較することはできません動作しないようです、多くの方法を試してみました。彼らは平等ではありません。あなたはのstrcmpを使用していけないのはなぜ

if (0 == strcmp(result, _T("one")) /* ... */ else /* ... */ 
0

をし、それが正常に動作しているかどうかを確認:あなたはCの文字列を使用するつもりなら、あなたはC文字列比較関数を使用する必要がありますか?

0

オーバーロードされた '='演算子を持つMFCのCStringを使用しているように見えるので、if条件が部分的にうまくいくようになります。ただし、次のようなコードを変更する必要があります。

CString result; 
result = ExecuteExternalProgram(L"c.txt", L"t.txt"); // return a CString 

if (result == CString("one")) 
    MessageBox(NULL,result.GetBuffer(), L"one", MB_OK); 
else 
    MessageBox(NULL,result.GetBuffer(), L"two", MB_OK); 
関連する問題