#include <codecvt>
using namespace std;
int main ()
{
string str_gbk = "中文";
string str_utf8;
wstring str_utf16;
// GBK(GB2312) <-> Unicode
wstring_convert<codecvt<wchar_t, char, mbstate_t>>
cvt_gbk(new codecvt<wchar_t, char, mbstate_t>("CHS"));
str_utf16 = cvt_gbk.from_bytes(str_gbk);
str_gbk = cvt_gbk.to_bytes(str_utf16);
// UTF-8 <-> Unicode
wstring_convert<codecvt_utf8<wchar_t>> cvt_utf8;
str_utf8 = cvt_utf8.to_bytes(str_utf16);
str_utf16 = cvt_utf8.from_bytes(str_utf8);
// GBK(GB2312) <-> UTF8
// 方法:GBK(GB2312) <-> Unicode <-> UTF8
return 0;
}C++11特性--编码转换
最新推荐文章于 2024-10-16 11:19:34 发布
本文提供了一个使用 C++ 实现的字符编码转换示例,包括 GBK 到 UTF-8 和 UTF-8 到 GBK 的转换过程。通过将 GBK 编码的字符串先转换为 Unicode (UTF-16),然后再从 Unicode 转换到 UTF-8,实现了两种常用编码之间的互转。
1479

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



