您的位置:首页 > Web前端

Unicode下wstring(wchar_t*)和string(char*)互相转换

2011-05-03 23:53 633 查看
#include

using namespace std;

//将string转换成wstring

wstring string2wstring(string str)

{

wstring result;

//获取缓冲区大小,并申请空间,缓冲区大小按字符计算

int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);

TCHAR* buffer = new TCHAR[len + 1];

//多字节编码转换成宽字节编码

MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);

buffer[len] = '/0';             //添加字符串结尾

//删除缓冲区并返回值

result.append(buffer);

delete[] buffer;

return result;

}

//将wstring转换成string

string wstring2string(wstring wstr)

{

string result;

//获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的

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

char* buffer = new char[len + 1];

//宽字节编码转换成多字节编码

WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);

buffer[len] = '/0';

//删除缓冲区并返回值

result.append(buffer);

delete[] buffer;

return result;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息