无法从'const char *'转换为'LPCTSTR'
cannot convert from 'const char *' to 'LPCTSTR'
我正在尝试将字符串转换为'lpctstr',但是,我有以下错误。
错误:
cannot convert from 'const char *' to 'LPCTSTR'
代码:
std::string str = "helloworld";
LPCTSTR lp = str.c_str();
也尝试:
LPCTSTR lp = (LPCTSTR)str.c_str();
但是,打印垃圾值。
LPCTSTR
表示(长指向常数TCHAR
字符串(。
TCHAR
可以根据您的项目设置为wchar_t
或char
。
如果在您的项目设置中,在"常规"选项卡中,您的字符集为"使用多字节字符集",那么TCHAR
是char
的别名。但是,如果设置为"使用Unicode字符集",则TCHAR
是wchar_t
的别名。
您必须使用Unicode字符集,因此:
LPCTSTR lp = str.c_str();
实际上是:
// c_str() returns const char*
const wchar_t* lp = str.c_str();
这就是为什么您会遇到错误:
不能从" const char *"转换为'lpctstr'
您的行:
LPCTSTR lp = (LPCTSTR)str.c_str();
实际上是:
const wchar_t* lp = (const wchar_t*) std.c_str();
在std::string
中,字符是单个字节,在wchar_t*
点上,他们会期望每个字符为2 字节。这就是为什么您要获得胡说八道的原因。
最好的办法是正如汉斯·帕斯特(Hans Passant(所建议的那样 - 不使用基于 TCHAR
的typedefs。在您的情况下,请这样做:
std::string str = "helloworld";
const char* lp = str.c_str(); // or
LPCSTR lp = str.c_str();
如果要使用Windows调用Unicode的宽字符,则可以执行此操作:
std::wstring wstr = L"helloword";
const wchar_t* lp = wstr.c_str() // or
LPCWSTR lp = wstr.c_str();
相关文章:
- 如何在Windows上将Qt QString转换为LPCTSTR
- 将 LPSTR 转换为 LPCTSTR
- 无法从'const char *'转换为'LPCTSTR'
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 将浮点数转换为 LPCTSTR 转换
- 将WCHAR转换为LPCTSTR
- 将cryptopp :: Integer转换为lpctstr
- 仅分配第一个字符,将 LPCTSTR 转换为字符*
- 如何将 LPTSTR 转换为 LPCTSTR&
- 如何将char []转换为lpctstr
- CString 到 LPCTSTR 的转换会中断 sql 查询
- 无法将参数 1 从"const char [5]"转换为"LPCTSTR"
- CString 到 LPCTSTR 的转换
- LPCTSTR 到 LPCSTR 的转换
- 如何将字符数组转换为 LPCTSTR
- 错误 C2664:'CComboBox::InsertString':无法将参数 2 从 'const char [4]' 转换为 'LPCTSTR'
- 使用 sstream 将 int 转换为 LPCTSTR 时出现奇怪的结果
- 无法在 MFC / C++ 项目中将参数 1 从'const wchar_t *'转换为'LPCTSTR'
- win32 API createFile 函数:转换为 LPCTSTR
- 字符串转换为LPCTSTR