mfc宽字节widechar与多字节multiChar相互转换

 

string WideCharToMultiChar( wstring in_str)
{
 string return_str;
 int len=WideCharToMultiByte(CP_ACP,0,in_str.c_str(),in_str.size(),NULL,0,NULL,NULL);
 char* buffer=new char[len+1];
 WideCharToMultiByte(CP_ACP,0,in_str.c_str(),in_str.size(),buffer,len,NULL,NULL);
 buffer[len]='\0';

 return_str.append(buffer);
 delete []buffer;
 return return_str;
}

void WideCharToMultiChar( wstring in_str,char* out_ptr )
{
 ASSERT(out_ptr);

 string return_str;
 int len=WideCharToMultiByte(CP_ACP,0,in_str.c_str(),in_str.size(),NULL,0,NULL,NULL);
 char* buffer=new char[len+1];
 WideCharToMultiByte(CP_ACP,0,in_str.c_str(),in_str.size(),buffer,len,NULL,NULL);
 buffer[len]='\0';
 strcpy_s(out_ptr,strlen(out_ptr),buffer);
 return_str.append(buffer);
 delete []buffer;
}

//
wstring MultiCharToWideChar( string in_str)
{
 wstring return_wstr;
 int len=MultiByteToWideChar(CP_ACP,0,in_str.c_str(),in_str.size(),NULL,0);
 TCHAR *buffer=new TCHAR[len+1];
 MultiByteToWideChar(CP_ACP,0,in_str.c_str(),in_str.size(),buffer,len);
 buffer[len]='\0';
 return_wstr.append(buffer);
 delete []buffer;
 return return_wstr;
}

void MultiCharToWideChar( string in_str,wstring* out_wstr )
{
 //wstring return_wstr;
 int len=MultiByteToWideChar(CP_ACP,0,in_str.c_str(),in_str.size(),NULL,0);
 TCHAR *buffer=new TCHAR[len+1];
 MultiByteToWideChar(CP_ACP,0,in_str.c_str(),in_str.size(),buffer,len);
 buffer[len]='\0';
 out_wstr->append(buffer);
 delete []buffer;
}

阅读更多
个人分类: VC++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭