如果不能正常工作
问题描述:
这是正确的方法吗?我已经尝试了很多方法,似乎不正常如果不能正常工作
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);
答
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);
即使结果是“one”,它也不会进入第一个条件。它总是跳转到ELSE。 – karikari 2011-01-13 11:24:24