c++11 string 转 utf8
时间: 2023-06-22 17:46:26 浏览: 91
在C++11中,可以使用std::wstring_convert类将std::string和std::wstring之间进行相互转换。其中,std::wstring表示的是UTF-16编码的字符串,而std::string表示的是UTF-8编码的字符串。
以下是一个将UTF-16字符串转换为UTF-8字符串的示例代码:
```
#include <string>
#include <codecvt>
int main()
{
std::wstring utf16str = L"Hello, 世界!";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::string utf8str = converter.to_bytes(utf16str);
return 0;
}
```
在上面的代码中,我们首先定义了一个UTF-16字符串utf16str。然后,我们创建了一个std::wstring_convert对象converter,并指定了其模板参数为std::codecvt_utf8_utf16<wchar_t>,这个对象可以将UTF-16编码的字符串转换为UTF-8编码的字符串。
最后,我们使用converter对象的to_bytes方法将UTF-16字符串utf16str转换为UTF-8字符串utf8str。
需要注意的是,std::wstring_convert类和std::codecvt_utf8_utf16<wchar_t>类都位于<codecvt>头文件中。此外,需要确保使用的编译器支持C++11标准。
阅读全文