I have a string or a char[], but the it is encoded in utf-16, like this:
Now I want to convert it to utf-8 in a new string, Please help me! I already tried like this:
But the compiler tells me I have a problem. How to solve this problem?
I have a string or a char[], but the it is encoded in utf-16, like this:
Now I want to convert it to utf-8 in a new string, Please help me! I already tried like this:
But the compiler tells me I have a problem. How to solve this problem?
The problem is evident: you define u16_str as a std::string when cvt.to_bytes() expect a std::u16string (as the name of the variable suggest).
The following code works for me
#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;
 }
