Fir*_*cer 6 c++ unicode wofstream
我知道ICU和小型库,比如代码项目上的utf8(忘记了确切的名称),但这些都不是我想要的.
我真正想要的是像ICU这样的东西,但是以更友好的方式结束.
特别:
如果不存在这样的库,是否可以使用标准c ++类包装ICU,所以我可以创建一个与std :: string和std :: wstring具有相同用法的ustring,并且还可以实现流的版本(最好是它们与现有的完全兼容,即我可以将它传递给期望std :: ostream的函数,并且它将在其内部格式和ascii(或utf-8)之间执行转换)?假设可能会有多少工作?
编辑:还看了c ++ 0x标准并注意到utf8,utf16和utf32的文字,这是否意味着标准库(例如字符串,流等)将完全支持那些编码和它们之间的转换?如果是这样,任何人都知道Visual Studio将支持这些功能需要多长时间?
EDIT2:至于使用现有的c ++支持,我会查找locale和facet的东西.
我遇到的一个问题是,当使用围绕wchar_t定义的流(在Windows下为文件i/o时为2个字节)时,它似乎仍然使用ascii作为文件自己.
std::wofstream file(L"myfile.txt", std::ios::out);
file << L"Hello World!" << std::endl;
Run Code Online (Sandbox Code Playgroud)
导致文件中的以下十六进制
48 65 6C 6C 6F 20 57 6F 72 6C 64 0D 0A
这显然是ascii而不是预期的utf-16输出:
FF FE 48 00 65 00 6C 00 6C 00 6F 00 20 00 57 00 6F 00 72 00 6C 00 64 00 0D 00 0A 00
可以通过指定特定的区域设置来格式化日期、时间等。至于自己推出——总是可以的,根据需要从底层库中获取尽可能多或尽可能少的内容。
另外查看了 c++0x 标准并注意到 utf8、utf16 和 utf32 的文字,这是否意味着标准库(例如字符串、流等)将完全支持这些编码以及它们之间的转换?
是的。但请注意,这些是不同的数据类型,而不是常规wchar序列或wstring.
如果是的话,有人知道 Visual Studio 需要多长时间才能支持这些功能吗?
据我所知:vc9 (VS2008) 仅部分支持某些 TR1 功能。vc10(VS2010)预计会有更好的支持。
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |