首页 > 其他 > 详细

string和wstring相互转换

时间:2020-12-02 16:23:14      阅读:37      评论:0      收藏:0      [点我收藏+]
//wstring转string
int convert_wstring_to_string(const wstring in_wstr, string& out_str)
{
	if (in_wstr.empty()) return 1;
	const wchar_t* wstr = in_wstr.c_str();
	char* str = NULL;
	int size = 0;
	string loc = setlocale(LC_ALL, NULL);//获得默认语言环境
	setlocale(LC_ALL, "chs"); //设置语言环境为chs
	size = wcstombs(NULL, wstr, 0);//获得转换后的宽字符数,不含终止符
	str = new char[size + 1];
	wcstombs(str, wstr, size); //转换为char字符存于数组str
	str[size] = ‘\0‘;
	out_str = str;
	delete[] str;
	setlocale(LC_ALL, loc.c_str()); //恢复默认语言环境
	return 0;
}

// string 转 wstring
int convert_string_to_wstring(const string in_str, wstring& out_wstr)
{
	if (in_str.empty()) return 1;
	const char* str = in_str.c_str();
	wchar_t* wcs = NULL;
	int size = 0;
	string loc = setlocale(LC_ALL, NULL);//获得默认语言环境
	setlocale(LC_ALL, "chs"); //设置语言环境为chs
	size = mbstowcs(NULL, str, 0);
	wcs = new wchar_t[size + 1];
	size = mbstowcs(wcs, str, size + 1);//转换为宽字符存于数组wcs
	wcs[size] = 0;
	out_wstr = wcs;
	delete[] wcs;
	setlocale(LC_ALL, loc.c_str());
	return 0;
}

unicode编码对照表
参考链接:https://blog.csdn.net/zhouguangcai8/article/details/80264184

string和wstring相互转换

原文:https://www.cnblogs.com/BadgerLee/p/14073765.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!