std::string 转utf8 实例
时间: 2023-11-14 19:04:35 浏览: 140
这里提供一个使用 C++ 的 std::string 类型将字符串转换为 UTF-8 编码的实例:
```cpp
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
int main() {
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wide_str = L"这是一个测试字符串"; // 宽字符串
std::string utf8_str = converter.to_bytes(wide_str); // 转换为 UTF-8 编码的字符串
std::cout << "UTF-8 编码的字符串: " << utf8_str << std::endl;
return 0;
}
```
上面的代码中,首先使用 std::wstring_convert 类来进行编码转换。这个类需要模板参数 std::codecvt_utf8_utf16<wchar_t>,它用于指定从 UTF-16 编码转换为 UTF-8 编码。然后创建一个宽字符串 wide_str,它包含要转换的字符串。最后,使用 to_bytes() 函数将宽字符串转换为 UTF-8 编码的字符串 utf8_str,并输出结果。
需要注意的是,使用 std::wstring_convert 类需要包含头文件 <codecvt>,而这个头文件在 C++17 中已经被废弃。因此,如果使用 C++17 或更新版本的编译器,建议使用 std::wstring_convert 的替代方案,如下所示:
```cpp
#include <iostream>
#include <string>
#include <locale>
int main() {
std::wstring wide_str = L"这是一个测试字符串"; // 宽字符串
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
std::string utf8_str = converter.to_bytes(wide_str); // 转换为 UTF-8 编码的字符串
std::cout << "UTF-8 编码的字符串: " << utf8_str << std::endl;
return 0;
}
```
这个代码与之前的代码非常相似,只是在创建 std::wstring_convert 对象时,使用了 std::codecvt_utf8<wchar_t> 作为模板参数,它用于指定从 wchar_t 编码转换为 UTF-8 编码。
阅读全文