c++ Unicode转utf8
时间: 2023-07-31 11:11:11 浏览: 158
在 C++ 中,将 Unicode 字符转换为 UTF-8 编码可以使用标准库中的 `wstring_convert` 类。下面是一段示例代码,可以将 `std::wstring` 类型的字符串转换为 UTF-8 编码的 `std::string` 类型:
```cpp
#include <iostream>
#include <locale>
#include <codecvt>
std::string WstringToUtf8(const std::wstring& wstr)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
return conv.to_bytes(wstr);
}
int main()
{
std::wstring wstr = L"你好,世界!";
std::string utf8str = WstringToUtf8(wstr);
std::cout << utf8str << std::endl;
return 0;
}
```
上面的代码中,`std::wstring_convert` 类使用了 `codecvt_utf8` 类型的转换器,它可以将 `wchar_t` 类型的 Unicode 字符转换为 UTF-8 编码的字节序列。`to_bytes` 函数将 `std::wstring` 类型的字符串转换为 `std::string` 类型的 UTF-8 编码字符串。
需要注意的是,上述代码中使用了 C++11 中的新特性,如果你的编译器不支持,可以使用 Boost 库中的 `boost::locale::conv::utf_to_utf` 函数来进行转换。
阅读全文