C++,有没有可以将LPCWSTR类型转换成string的简单点的方法?

 我来答
ydnhwan
2010-12-12 · TA获得超过443个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:320万
展开全部
BOOL WCharToMByte(LPCWSTR lpcwszStr, string &str)
{
DWORD dwMinSize = 0;
LPSTR lpszStr = NULL;
dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
if(0 == dwMinSize)
{
return FALSE;
}
lpszStr = new char [dwMinSize];
WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwMinSize,NULL,FALSE);
str = lpszStr;
delete [] lpszStr;
return TRUE;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
serenesunny
2010-12-12 · TA获得超过5699个赞
知道小有建树答主
回答量:774
采纳率:0%
帮助的人:596万
展开全部
LPCWSTR和CString 可以相互转化,LPCWSTR的原型是 const unsigned short * , 它不能直接转化成string 。可以先将LPCWSTR转化成CString,再将CString转化成string
代码如下:
LPCWSTR pcwStr = L"TestpwcStr";
CString str(pcwStr);
string s(CString.GetBuffer());
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上上西
2010-12-12 · TA获得超过346个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:0
展开全部
string UnicodeToANSI( const wstring& str )
{
char* pElementText;
int iTextLen;
// wide char to multi char
iTextLen = WideCharToMultiByte( CP_ACP,
0,
str.c_str(),
-1,
NULL,
0,
NULL,
NULL );
pElementText = new char[iTextLen + 1];
memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
WideCharToMultiByte( CP_ACP,
0,
str.c_str(),
-1,
pElementText,
iTextLen,
NULL,
NULL );
string strText;
strText = pElementText;
delete[] pElementText;
return strText;
}
直接给你这个函数拿去用吧,不用管它是怎么实现的,简单吧?内部调用了WINDOWS API,所以别忘了加上#include <windows.h>。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式