Output UTF-8 (u8) std::string

2019-08-17 17:43发布

In C++11 and later, using the u8 prefix on a string literal can create char (byte) sequences that are UTF-8 encoded.

How do you output those sequences to a std::ostream? How do you tell a std::ostream that a const char * or std:string to be output contains characters encoded in UTF-8, rather than the default encoding?

1条回答
ゆ 、 Hurt°
2楼-- · 2019-08-17 18:21

You don't. The stream does not know or care what the encoding of the text is. Despite it's name, a char is not treated by std:ostream as containing a character encoded in the platform encoding. It must treats a char as a byte to be written out. It writes the "text" (byte sequence) as given (outside of possibly performing \n translation), assuming you don't imbue it with a facet that changes this. If you write characters that conform to UTF-8, then that's what ends up in the output.

查看更多
登录 后发表回答