是否指定了如果我灌输 basic_stream<char>
会发生什么?使用语言环境 codecvt_utf16<char>
方面?
基本上,我使用 typedef wchar_t tchar;
和 typedef char tchar;
改变我的库的(我称之为)Unicode 和非 Unicode 版本的接口(interface)。我想通过始终使用 codecvt_utf16<tchar>
为我的文件流注入(inject)语言环境来简化源代码方面。这无论如何都行得通吗?
(我不介意这样的 fstream
读取的文件是否必须仅包含 ASCII 或仅包含当前全局语言环境中可表示的代码点。)
编辑:
鉴于codecvt_utf16<char>
似乎是未指定的行为,用 codecvt_utf16<wchar_t>
灌输 basic_stream 怎么样? ?是否指定了此行为?
最佳答案
根据 C++0x,codecvt_utf*<>
只能用宽字符实例化。如果你使用 char
会发生什么没有指定,只有尝试才能知道。
请记住,codecvt_utf16 与外部 UTF-16 表示形式相互转换。也就是说,您的文件应该以 UTF-16 编码。您可能需要考虑改用 UTF-8。
作为旁注,我很困惑为什么现在有人想要任何非 Unicode 的东西。人们喜欢使用受限制的字符集还是什么?
关于c++ - 如果我将 basic_stream<char> 与 codecvt_utf16<char> facet 的语言环境相结合,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148127/