ошибка C2446: ==: нет преобразования из const char * в TCHAR * - PullRequest
2 голосов
/ 17 ноября 2010

У меня есть TCHAR, определяемый ниже:

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

, и я хочу сравнить его, как показано ниже:

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

Но тогда я получаю ошибки:

ошибка C2446: ==: нет преобразования из const char * в TCHAR *
ошибка C2440: '==': невозможно преобразовать из 'const char [14]' в 'TCHAR [260]'

Ответы [ 2 ]

8 голосов
/ 17 ноября 2010

"NDSClient.exe" - строка const char* в Windows.Если вы хотите, чтобы он стал const TCHAR*, вам нужно использовать макрос TEXT.Также нельзя сравнивать строки, используя ==, используя эквивалентную TCHAR функцию, например _tcscmp.

5 голосов
/ 17 ноября 2010

Также вы можете использовать. L"some string" сделать ЧАР *. Но я предлагаю вам использовать std::wstring (аналог std::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;
}
...