我正在使用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.