无法从'TCHAR [260]'转换为'std :: basic_string <wchar_t,std :: char_traits <wchar_t>,std :: allocator <wchar_t>&gt;

时间:2018-03-30 18:27:19

标签: c++ char tchar

  

错误C2440:'初始化':无法从'TCHAR [260]'转换为   “的std :: basic_string的&LT; wchar_t的,标准:: char_traits&LT; wchar_t的&GT;,的std ::分配器&LT; wchar_t的&GT;&GT;

我收到这个错误,被困在这几个小时..

MiniZinc IDE

1 个答案:

答案 0 :(得分:1)

TCHAR定义为charwchar_t,具体取决于您是否定义了UNICODE宏。在您的情况下,它看起来没有定义,因此您尝试从std::wstring数组构建char[]

我建议你总是在Windows上使用宽API,因为这是在那里获得适当的Unicode支持的唯一方法:

wchar_t szModName[MAX_PATH];
if (!GetModuleFileNameExW(hProcess, hMods[i], szModName, MAX_PATH))
    continue;

wstring modName = szModName;

GetModuleFileNameEx不是一个函数,而是一个扩展为GetModuleFileNameExAGetModuleFileNameExW的宏,具体取决于UNICODE宏。

最初,提供TCHAR变体是为了便于从没有Unicode支持的旧Windows版本过渡到支持Unicode的新的基于NT的Windows版本。如今,根本没有理由使用ANSI变体。