如何将utf16中编码的字符串转换为以UTF-8编码的字符串?

时间:2016-06-02 09:10:36

标签: c++ string c++11 encoding utf-8

我有一个字符串或char [],但它是用utf-16编码的,如下所示:

enter image description here

现在我想在新字符串中将其转换为utf-8,请帮助我!我已经尝试过这样:

enter image description here

但是编译器告诉我我有问题。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题很明显:当u16_str期望std::string(作为变量的名称建议)时,您将cvt.to_bytes()定义为std::u16string

以下代码适用于我

#include <locale>
#include <codecvt>
#include <iostream>

int main ()
 {
   std::u16string  u16_str { u"aeiuoàèìòùAEIOU" };

   std::wstring_convert<std::codecvt_utf8<char16_t>, char16_t> cvt;

   std::string  u8_str = cvt.to_bytes(u16_str);

   std::cout << u8_str << std::endl;

   return 0;
 }