何问起C++教程 - Windows编程 - Win32编程
支持中文的string到LPCWSTR的转换方法
以下是C++方法,把std::string转换为LPCWSTR,测试过可行,支持中文,供参考:
LPCWSTR HtStringToLPCWSTR(string hovertreeString)
{
size_t m_htSize = hovertreeString.length();
int m_wLen = ::MultiByteToWideChar(CP_UTF8,
0,
hovertreeString.c_str(),
-1,
NULL,
0);
wchar_t* m_hovertreeBuffer = new wchar_t[m_wLen + 1];
memset(m_hovertreeBuffer, 0, (m_wLen + 1) * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, hovertreeString.c_str(), m_htSize, (LPWSTR)m_hovertreeBuffer, m_wLen);
return m_hovertreeBuffer;
}
需要在文件开头写的代码:
#include <string>
using namespace std;
本方法可以解决以下报错:
不存在从 "std::string" 到 "LPCWSTR" 的适当转换函数

LPCWSTR是什么类型呢??
看看如何定义的:

typedef const wchar_t* LPCWSTR;

顾名思义就是:?
LPCWSTR是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。
收藏 列表

评论: