输出UTF-8(u8)std :: string

时间:2017-12-07 23:55:39

标签: c++ utf-8 iostream

在C ++ 11及更高版本中,在字符串文字上使用u8前缀可以创建UTF-8编码的char(字节)序列。

如何将这些序列输出到std::ostream?您如何告诉std::ostream要输出的const char *std:string包含以UTF-8编码的字符,而不是默认编码?

1 个答案:

答案 0 :(得分:1)

你没有。流不知道或不关心文本的编码是什么。尽管它的名称是charstd:ostream不会将char视为包含在平台编码中编码的字符。它必须将\n视为要写出的字节。它将“text”(字节序列)写为给定的(在可能正在执行的 [Sun Jan 01 2006 00:00:00 GMT-0600 (CST), 8.605613643557573] [Mon Jan 01 2007 00:00:00 GMT-0600 (CST), 4.639263458390814] [Tue Jan 01 2008 00:00:00 GMT-0600 (CST), 3.690424190442011] [Thu Jan 01 2009 00:00:00 GMT-0600 (CST), -6.068362055704255] [Fri Jan 01 2010 00:00:00 GMT-0600 (CST), 0.011317380895792274] [Sat Jan 01 2011 00:00:00 GMT-0600 (CST), 3.9984661908088825] [Sun Jan 01 2012 00:00:00 GMT-0600 (CST), 2.4211622308876173] [Tue Jan 01 2013 00:00:00 GMT-0600 (CST), -1.5740599423273804] [Wed Jan 01 2014 00:00:00 GMT-0600 (CST), 2.6624793033769967] [Thu Jan 01 2015 00:00:00 GMT-0600 (CST), 1744.9379869455643] ["err", NaN] [Wed Jan 01 2020 00:00:00 GMT-0600 (CST), 3417.1886283181875] [Wed Jan 01 2025 00:00:00 GMT-0600 (CST), 3331.7059850696196] [Tue Jan 01 2030 00:00:00 GMT-0600 (CST), 3237.940431993671] 转换之外),假设您没有使用改变它的方面来填充它。如果你写的符合UTF-8的字符,那么这就是输出中的结果。