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

来源:互联网 发布:初学英语单词软件 编辑:程序博客网 时间:2024/05/23 16:21
 

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

原创粉丝点击