读书人

wchar_t 转 char* 的有关问题

发布时间: 2013-03-27 11:22:41 作者: rapoo

wchar_t 转 char* 的问题
1:数据源部分
a: wchar_t orig[200]={_T("sdfsdf")};

b: wchar_t orig[200];
LoadStringW(m_hdll,10000,orig,200);

2:公共部分

size_t origsize = wcslen(orig) + 1;
size_t convertedChars = 0;
const size_t newsize = origsize*2;
char *nstring = new char[newsize];
wcstombs_s(&convertedChars, nstring, newsize, orig, _TRUNCATE);

如果数据源为a,执行公共部分代码,nstring有值,
如果数据源为b,执行公共部分代码,nstring无值,loadstringw执行后,orig是有值的

求高手指点
[解决办法]
wstring转string

std::string StringHelper::WString2String(std::wstring wstr)
{
int len =-1;
char* pszDst=NULL;

len=WideCharToMultiByte(CP_ACP,0,wstr.c_str(),wstr.length(),NULL,0,NULL, NULL);

if ( len<= 0)
return std::string("");

pszDst = new char[len+1];
memset( pszDst,0, (len+1)*sizeof(char));

if ( NULL == pszDst)
return std::string("");
WideCharToMultiByte( CP_ACP, 0,wstr.c_str(),wstr.length(),pszDst, len,NULL, NULL);
std:: string strTemp( pszDst);

delete [] pszDst;

return strTemp;
}

读书人网 >VC/MFC

热点推荐