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);
即使结果是“一”,它也不会进入第一个条件。即使结果是“一”,它也不会进入第一个条件。它总是跳转到其他地方。