将Unicode字符写入OStream

mon*_*ksy 5 c++ unicode wchar-t ostream

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

Phi*_*ipp 3

ostreamC++ 和其他 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
}
Run Code Online (Sandbox Code Playgroud)

是否获得类似 Unicode 的东西取决于实现。C++中的流从来都不是Java意义上的文本流,C++的字符串也不是Java意义上的字符串。如果你想要一个真正的 Unicode 字符串,你可能想看看ICU 库