首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

wchar_t 转 char* 的有关问题

2013-03-27 
wchar_t 转 char* 的问题1:数据源部分a: wchar_t orig[200]{_T(sdfsdf)}b: wchar_t orig[200]LoadStr

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;
}

热点排行