1.UTF8(string)转 wstring(这里的wstring就是unicode也就是utf16)
std::wstring UTF82Wide(const std::string& strUTF8)
{
int nWide = ::MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), strUTF8.size(), NULL, 0);
std::unique_ptr<wchar_t[]> buffer(new wchar_t[nWide + 1]);
if (!buffer)
{
return L"";
}
::MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), strUTF8.size(), buffer.get(), nWide);
buffer[nWide] = L'\0';
return buffer.get();
}
2.wstring 转 UTF8(string)
std::string Wide2UTF8(const std::wstring& strWide)
{
int nUTF8 = ::WideCharToMultiByte(CP_UTF8, 0, strWide.c_str(), strWide.size(), NULL, 0, NULL, NULL);
std::unique_ptr<char[]> buffer(new char[nUTF8 + 1]);
if (!buffer)
{
return "";
}
::WideCharToMultiByte(CP_UTF8, 0, strWide.c_str(), strWide.size(), buffer.get(), nUTF8, NULL, NULL);
buffer[nUTF8] = '\0';
return buffer.get();
}
3.ANSI(GBK)转 wstring
std::wstring Ansi2Wide(const std::string& strAnsi)
{
int nWide = ::MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), strAnsi.size(), NULL, 0);
std::unique_ptr<wchar_t[]> buffer(new wchar_t[nWide + 1]);
if (!buffer)
{
return L"";
}
::MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), strAnsi.size(), buffer.get(), nWide);
buffer[nWide] = L'\0';
return buffer.get();
}
4.wstring 转 ANSI
std::string Wide2Ansi(const std::wstring& strWide)
{
int nAnsi = ::WideCharToMultiByte(CP_ACP, 0, strWide.c_str(), strWide.size(), NULL, 0, NULL, NULL);
std::unique_ptr<char[]> buffer(new char[nAnsi + 1]);
if (!buffer)
{
return "";
}
::WideCharToMultiByte(CP_ACP, 0, strWide.c_str(), strWide.size(), buffer.get(), nAnsi, NULL, NULL);
buffer[nAnsi] = '\0';
return buffer.get();
}
5。utf16转utf8
string StrUtil::Utf16ToUtf8(const wstring& str)
{
//含\0
int len = ::WideCharToMultiByte(CP_UTF8, NULL, str.c_str(), -1, NULL, NULL, NULL, NULL);
if (len == 0)
{
return string();
}
char* pDst = new char[len];
::WideCharToMultiByte(CP_UTF8, NULL, str.c_str(), -1, pDst, len, NULL, NULL);
string ret(pDst, len - 1);
delete[] pDst;
return ret;
}
6.utf8转utf16
wstring StrUtil::Utf8ToUtf16(const string&a
字符串编码转换与数值类型转换函数

这段代码展示了C++中字符串与宽字符串(Unicode)之间的转换,包括UTF8到宽字符串,宽字符串到UTF8,ANSI到宽字符串以及宽字符串到ANSI的转换。同时,还提供了将数值(如整数、浮点数)转换为字符串的方法。这些函数对于处理不同编码间的字符串转换和格式化输出非常有用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



