C ++ 0x中没有Unicode流?为什么?

| 今天,我发现C ++标准委员会已经在第二版中取消了C ++ 0x中的Unicode流支持。有关更多信息,请参见此问题。 根据此文件:   放弃这两种新类型的流专业化的理由是非字符类型的流没有吸引广泛的使用,因此尚不清楚是否确实需要将这种非常复杂的机器的专业化数量加倍。 从对Stroustrup的采访中:   显然,我们应该在标准库中具有Unicode流和其他更多扩展的Unicode支持。该委员会知道,但是没有任何人有技能和时间来完成这项工作,因此,不幸的是,这是您必须寻求“第三方”支持的众多领域之一。 我不是Unicode方面的专家,我想知道为什么实现Unicode流如此困难?有什么问题吗?     
已邀请:
您引用的第一段告诉您:并不是说Unicode流比其他流更难,而是iostream通常非常复杂。因此,实现Unicode iostream并不困难,这不是因为它们是Unicode,而是因为它们是iostream。     
论文N2238来自2007年,没有任何关联。我不确定Stroustrup在采访中具体指的是什么,但这并不是突发新闻。 N3242§22.5仍然需要
codecvt_utf8
codecvt_utf16
,这是Unicode文件I / O所需的全部。
imbue
正确地刻在
wcout
上,应该很好用……假设您有兼容的库。但是,实际上,GCC和MSVC已经提供了UTF-8,我希望每个严肃的C ++平台都能使
mbstowcs
codecvt
之间保持平价。 可能会有混淆,因为N3242§22.5/ 5说   —多字节序列只能写为二进制文件。尝试写入文本文件   产生不确定的行为。 这是因为文本模式I / O会转换行尾,因此,作为16位UTF-16字的一半的6字节可能会转换为7字节,从而破坏了流。这与支持不佳无关……只要确保以二进制模式打开文件,就必须使用提供这种功能的任何库。     

要回复问题请先登录注册