C++中UTF-8转换成string

本来想着有没有直接将UTF-8编码转换成string的函数,查找了半天,然而并没有,无奈只好自己封装了一个,使用了C++11,代码如下:

std::string MyString::UnicodeToAscii(const std::wstring str)
{
	int	iTextLen = WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, NULL, 0,	NULL, NULL);
	std::vector vecText(iTextLen, '\0');
	::WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, &(vecText[0]), iTextLen, NULL, NULL);

	std::string strText = &(vecText[0]);

	return strText;
}


std::string MyString::UTF8ToString(const std::string & utf8Data)
{
	//先将UTF-8转换成Unicode
	std::wstring_convert> conv;
	std::wstring wString = conv.from_bytes(utf8Data);
	//在转换成string
	return UnicodeToAscii(wString);
}


这样就大功告成了!

你可能感兴趣的:(C语言)