2011-01-13 11 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); 
관련 문제