2013-07-14 129 views
-1

我有我返回一个字符串作为const char *功能:转换为const char *到LPCTSTR

const char* get_text(); 

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

如何将我得到的字符串转换为get_text()

+0

它所编码(charset)由get_text()返回的字符串?问题在于,LPCTSTR依赖于项目设置中的字符集:对于非Unicode,它与const char *相同,对于Unicode,它是const wchar_t *。很可能你正试图获得一个Unicode字符串,但是你应该知道源字符串的字符集是什么。 – Inspired

+0

@Inspired'get_text'返回一个普通的ASCII字符串 – Alex

回答

3

当你使用MFC,并假设UNICODE版本(!不然你不会有这样的错误),可能是最简单的方法就是直接实例wchar_t兼容CString

CStringW szWide(getText()); 
AfxMessageBox(szWide); 
+0

或者,您可以使用[ATL和MFC字符串转换宏]之一(http://msdn.microsoft.com/en-us/library/vstudio/87zae4a3.aspx ):'AfxMessageBox(CA2CT(getText()));'。然而,Roger提供的答案更容易遵循。 – IInspectable