I'm trying to work with utf16 strings on Linux.
I've created a utf16 stringstream as follows:
std::basic_stringstream<char16_t, std::char_traits<char16_t>> u16ss;
My problem is I can't spend numbers on it.
Here a full minimal test:
#include <iostream>
#include <string>
#include <sstream>
#include <locale>
#include <codecvt>
using namespace std;
int main()
{
std::basic_stringstream<char16_t, std::char_traits<char16_t>> u16ss;
u16ss << u"abcd-" << 1 << u"-zxc";
std::wstring_convert<std::codecvt_utf8_utf16<char16_t,0x10ffff,std::little_endian>, char16_t> conv;
std::cout<<conv.to_bytes(u16ss.str())<<std::endl;
return 0;
}
The output is:
abcd-
The stringstream stops appending when getting the first number...
How can I fix it?
Thanks for your help.