如果不能正常工作

问题描述:

这是正确的方法吗?我已经尝试了很多方法,似乎不正常如果不能正常工作

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

即使结果是“one”,它也不会进入第一个条件。它总是跳转到ELSE。 – karikari 2011-01-13 11:24:24

C字符串不能==相比的工作 - ==比较结果指针是否是一样的指针,你翻译的字符串。他们不会平等。你为什么不使用STRCMP

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

并检查是否正常工作:如果你要使用C字符串,那么你应该使用C字符串比较函数?

看起来像你使用MFC的CString,它有一个重载'='运算符,所以你的条件部分是好的。但是,您需要更改这样的代码:

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);