【发布时间】:2011-12-31 10:11:33
【问题描述】:
C++11 引入了 char16_t 和 char32_t 以方便处理 UTF-16 和 UTF-32 编码的文本字符串。但是<iostream> 库仍然只支持实现定义的wchar_t 用于多字节I/O。
为什么没有将char16_t 和char32_t 的支持添加到<iostream> 库以补充wchar_t 支持?
【问题讨论】:
-
你试过
std::basic_iostream<char32_t>吗?仅仅因为没有预定义类型(例如std::iostream用于char)并不意味着没有支持。 -
我刚刚在 GCC 版本 4.7.0 中测试了
basic_istringstream<char16_t>。它编译,但在执行过程中崩溃。当然,这并不能证明支持可能存在于另一个环境中,但我仍然觉得奇怪的是标准化委员会没有包括与 wchar_t 平等的支持。 -
我的意思是,“……并没有反驳……”。
-
basic_istringstream
和 应该可以正常工作。如果它不在 GCC 中,那么这只是一个错误,或者他们还没有解决这个问题。 -
@bames53 :除了
char和wchar_t之外,该标准不需要支持——所有其他字符类型都是严格实现定义的,因此不支持它们不一定是“错误” .
标签: c++ c++11 iostream char16-t char32-t