Visual c++ 如果不能正常工作
这是正确的方法吗?我已经尝试了很多方法,但似乎都不能正常工作Visual c++ 如果不能正常工作,visual-c++,Visual C++,这是正确的方法吗?我已经尝试了很多方法,但似乎都不能正常工作 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
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字符串与
==
进行比较--==
比较结果指针是否与指向已翻译字符串的指针相同。他们不会平等的。如果要使用C字符串,则应使用C字符串比较函数:
if (0 == strcmp(result, _T("one")) /* ... */ else /* ... */
无法将C字符串与
==
进行比较--==
比较结果指针是否与指向已翻译字符串的指针相同。他们不会平等的。如果要使用C字符串,则应使用C字符串比较函数:
if (0 == strcmp(result, _T("one")) /* ... */ else /* ... */
为什么不使用strcmp并检查它是否正常工作?为什么不使用strcmp并检查它是否正常工作?看起来您使用的是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);
看起来您使用的是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);
即使结果是“一”,它也不会进入第一个条件。即使结果是“一”,它也不会进入第一个条件。它总是跳转到其他地方。