c – 将Unicode字符写入OStream

我正在使用unicode / wide字符,我正在尝试创建一个toString方法(Java ::toString equiv). ostream是否会处理宽字符,如果有的话,是否有办法警告流的消费者它是unicode出来的呢?

解决方法:

ostream和C的其余部分都不知道有关Unicode的任何信息.通常你用C编写一个字符串转换如下:

template<typename Char, typename Traits>
std::basic_ostream<Char, Traits>&
operator<<(std::basic_ostream<Char, Traits>& stream, const YourType& object) {
    return stream << object.a << object.b;  // or whatever
}

你是否得到类似Unicode的东西取决于实现. C语言中的流从不是Java意义上的文本流,而C的字符串不是Java意义上的字符串.如果您想要一个真正的Unicode字符串,您可能需要查看ICU library.

上一篇:(原)ubuntu上编译PANet/Detectron.pytorch时-std=c99的错误


下一篇:C#相当于IEEE 754余数()?