错误C2446:==:没有从const char *到TCHAR的转换*

时间:2010-11-17 06:00:19

标签: c++ windows tchar

我在下面定义了一个TCHAR:

 TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");

我希望如下:

if(szProcessName == "NDSClient.exe")
{
} 

但后来我收到了错误:

  

错误C2446:==:没有从const char *转换为TCHAR *
  错误C2440:'==':无法从'const char [14]'转换为'TCHAR [260]'

2 个答案:

答案 0 :(得分:8)

"NDSClient.exe"是Windows上的const char*字符串。如果您希望它成为const TCHAR*,那么您需要使用TEXT宏。另外,您无法使用==使用等效TCHAR函数比较字符串,例如_tcscmp

答案 1 :(得分:5)

你也可以使用。 L"some string"制作TCHAR *。但我建议你使用std::wstring(类似std::stringstd::string需要#include <string>)而不是TCHAR *。

示例:

#include <windows.h>
#include <string>
#include <iostream>
using namespace std;
int main()
{
 wstring s = TEXT("HELLO");
 wstring ss = L"HELLO";
 if(s == ss)
  cout << "hello" << endl;
 return 0;
}