数据转换

//ACSII转Unicode  
wstring CodeConvert::AcsiiToUnicode(const string& acsii_string)
{
	wstring unicode_string;

	//CP_ACP - default to ANSI code page  
	int len = MultiByteToWideChar(CP_ACP, 0, acsii_string.c_str(), -1, NULL, 0);
	if (ERROR_NO_UNICODE_TRANSLATION == len || 0 == len)
	{
		//return empty wstring  
		return unicode_string;
	}

	vector<wchar_t> vec_result(len);
	int result_len = MultiByteToWideChar(CP_ACP, 0, acsii_string.c_str(), -1, &vec_result[0], len);
	if (result_len != len)
	{
		//return empty wstring  
		return unicode_string;
	}

	unicode_string = wstring(&vec_result[0]);
	return unicode_string;
}

//ACSII转UTF8  
string CodeConvert::AcsiiToUtf8(const string& acsii_string)
{
	wstring unicode_string = AcsiiToUnicode(acsii_string);  //将ACSII转换为Unicode  
	string utf8_string = UnicodeToUtf8(unicode_string);     //将Unicode转换为UTF8  
	return utf8_string;
}

//Unicode转ACSII  
string CodeConvert::UnicodeToAcsii(const wstring& unicode_string)
{
	string acsii_string;

	//CP_OEMCP - default to OEM  code page  
	int len = WideCharToMultiByte(CP_OEMCP, 0, unicode_string.c_str(), -1, NULL, 0, NULL, NULL);
	if (ERROR_NO_UNICODE_TRANSLATION == len || 0 == len)
	{
		//return empty wstring  
		return acsii_string;
	}

	vector<char> vec_result(len);
	int result_len = WideCharToMultiByte(CP_OEMCP, 0, unicode_string.c_str(), -1, &vec_result[0], len, NULL, NULL);;
	if (result_len != len)
	{
		//return empty wstring  
		return acsii_string;
	}

	acsii_string = string(&vec_result[0]);
	return acsii_string;
}

//Unicode转UTF8  
string CodeConvert::UnicodeToUtf8(const wstring& unicode_string)
{
	string utf8_string;

	//CP_UTF8 - UTF-8 translation  
	int len = WideCharToMultiByte(CP_UTF8, 0, unicode_string.c_str(), -1, NULL, 0, NULL, NULL);
	if (0 == len)
	{
		//return empty wstring  
		return utf8_string;
	}

	vector<char> vec_result(len);
	int result_len = WideCharToMultiByte(CP_UTF8, 0, unicode_string.c_str(), -1, &vec_result[0], len, NULL, NULL);;
	if (result_len != len)
	{
		//return empty wstring  
		return utf8_string;
	}

	utf8_string = string(&vec_result[0]);
	return utf8_string;
}

//UTF8转ACSII  
string CodeConvert::Utf8ToAcsii(const string& utf8_string)
{
	wstring unicode_string = Utf8ToUnicode(utf8_string);        //将UTF8转换为Unicode  
	string acsii_string = UnicodeToAcsii(unicode_string);   //将Unicode转换为ACSII  
	return acsii_string;
}

//UTF8转Unicode  
wstring CodeConvert::Utf8ToUnicode(const string& utf8_string)
{
	wstring unicode_string;

	//CP_UTF8 - UTF-8 translation  
	int len = MultiByteToWideChar(CP_UTF8, 0, utf8_string.c_str(), -1, NULL, 0);
	if (ERROR_NO_UNICODE_TRANSLATION == len || 0 == len)
	{
		//return empty wstring  
		return unicode_string;
	}

	vector<wchar_t> vec_result(len);
	int result_len = MultiByteToWideChar(CP_UTF8, 0, utf8_string.c_str(), -1, &vec_result[0], len);
	if (result_len != len)
	{
		//return empty wstring  
		return unicode_string;
	}

	unicode_string = wstring(&vec_result[0]);
	return unicode_string;
}

//BSTR转string  
string CodeConvert::BSTRToString(const BSTR& str)
{
	string newStr = (_bstr_t)str;
	return newStr;
}

//string转BSTR  
BSTR CodeConvert::StringToBSTR(const string& str)
{
	_variant_t strVar(str.c_str());
	return strVar.bstrVal;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值