将 const char* 转换为 LPCTSTR

Posted

技术标签:

【中文标题】将 const char* 转换为 LPCTSTR【英文标题】:Convert const char* to LPCTSTR 【发布时间】:2013-07-14 10:54:46 【问题描述】:

我有一个函数返回一个字符串为const char *

const char* get_text();

我需要调用一个函数AfxMessageBox(LPCTSTR text)

如何转换get_text()得到的字符串?

【问题讨论】:

get_text() 返回的字符串的编码(字符集)是什么?问题是 LPCTSTR 取决于项目设置中的字符集:对于非 Unicode,它与 const char* 相同,而对于 Unicode,它是 const wchar_t*。很可能您正在尝试获取 Unicode 字符串,但是您应该知道源字符串的字符集是什么。 @Inspired get_text 返回一个常规的 ASCII 字符串 【参考方案1】:

当您使用 MFC 并假设 UNICODE 构建时(否则您不会遇到此错误!),可能最简单的方法是直接实例化 wchar_t 兼容 CString

CStringW szWide(getText());
AfxMessageBox(szWide);

【讨论】:

或者你可以使用ATL and MFC String Conversion Macros:AfxMessageBox( CA2CT( getText() ) );之一。然而,罗杰提供的答案更容易理解。

以上是关于将 const char* 转换为 LPCTSTR的主要内容,如果未能解决你的问题,请参考以下文章

C++CString转换为const char *类型

c++ 从 LPCTSTR 转换为 const char *

error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“const char [9]”转换为“LPCTSTR”

(转)const char to LPCTSTR不能转化问题

CString转换为const char*

不能从const char *转换为LPCWSTR