c ++从LPCTSTR转换为const char*

Ann*_*nie 4 c++ types type-conversion

我在MSVC2008 MFC中遇到此问题.我正在使用unicode.我有一个函数原型:

MyFunction(const char *)
Run Code Online (Sandbox Code Playgroud)

我在说它:

MyfunFunction(LPCTSTR wChar). 
Run Code Online (Sandbox Code Playgroud)

错误:无法将参数1从"LPCTSTR"转换为"const char*"

怎么解决?

Mar*_*som 5

由于您使用的是MFC,因此您可以轻松地让CString自动转换charTCHAR:

MyFunction(CString(wChar));
Run Code Online (Sandbox Code Playgroud)

无论您的原始字符串是基于char还是wchar_t基于,都可以

编辑:看来我的原始答案与你的要求相反.轻松修复:

MyFunction(CStringA(wChar));
Run Code Online (Sandbox Code Playgroud)

CStringA是一个CString特别包含char字符的版本,而不是TCHAR.还有一个CStringW持有wchar_t.


Arm*_*yan 2

LPCTSTR是一个指向const TCHARand TCHARis 的指针,WCHAR并且WCHAR很可能是wchar_tconst wchar_t*如果可以的话,让你的函数采取,或者手动创建一个const char*缓冲区,复制内容,然后传递它。

  • 更好的是,使用区域设置感知的“wcstombs”提供从“const wchar_t *”到“const char *”(或“std::wstring”到“std::string”)的通用转换函数,并通过该函数分解所有调用。 (2认同)