问题
I have a TCHAR define below:
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
and I want to comapare as below:
if(szProcessName == "NDSClient.exe")
{
}
But then I am getting the errors:
error C2446: == : no conversion from const char * to TCHAR *
error C2440: '==' : cannot convert from 'const char [14]' to 'TCHAR [260]'
回答1:
"NDSClient.exe"
is a const char*
string on windows. If you want it to become a const TCHAR*
then you need to use the TEXT
macro. Also, you can not compare strings using ==
use a equivalent TCHAR
function such as _tcscmp
.
回答2:
Also you can use. L"some string"
to make TCHAR*. But I suggest you to use std::wstring
(analog of std::string
and as std::string
needs #include <string>
) instead of TCHAR*.
example:
#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;
}
来源:https://stackoverflow.com/questions/4201893/error-c2446-no-conversion-from-const-char-to-tchar