2010-11-17 212 views
2

我有一个TCHAR如下定义:错误C2446:==:没有从为const char *到TCHAR *转换

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

,我想如下comapare:

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

但后来我我得到的错误:

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

回答

8

"NDSClient.exe"const char*串上的窗户。如果你想让它变成const TCHAR*那么你需要使用宏TEXT。此外,您无法使用==使用等效的TCHAR功能比较字符串,如_tcscmp

5

你也可以使用。 L"some string"使TCHAR *。但我建议您使用std::wstringstd::string的模拟和std::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; 
} 
+0

修正你的代码标记。 – 2010-11-17 08:42:55

+0

L“some string”是“WCHAR *”而不是“TCHAR *”。 – MSalters 2010-11-17 09:13:59

+0

如果你使用'std :: wstring',那么你应该在每个地方使用'wchar_t'而不是TCHAR。 (并且扩展名不能使用TEXT宏) – 2010-11-17 14:30:55