2

是否指定了如果我basic_stream<char>使用带有codecvt_utf16<char>方面的语言环境会发生什么?

基本上,我使用typedef wchar_t tchar;typedef char tchar;更改我的库的(我称之为)Unicode 和非 Unicode 版本的接口。我想通过始终使用带有codecvt_utf16<tchar>facet 的语言环境来填充我的文件流来使源代码更简单。这无论如何都会起作用吗?

(我不介意这种被灌输的文件fstream是否必须仅包含 ASCII 或仅包含当前全局语言环境中可表示的代码点。)

编辑:

鉴于这codecvt_utf16<char>似乎是未指定的行为,那么将 basic_stream 与 灌输怎么样codecvt_utf16<wchar_t>?是否指定了此行为?

4

1 回答 1

1

根据 C++0x,codecvt_utf*<>只能用宽字符实例化。如果char没有指定使用会发生什么,唯一知道的方法就是尝试。

请记住,codecvt_utf16 与外部 UTF-16 表示相互转换。也就是说,您的文件应该以 UTF-16 编码。您可能要考虑改用 UTF-8。

附带说明一下,为什么现在有人想要任何非 Unicode 的东西对我来说是个谜。人们喜欢使用受限字符集还是什么?

于 2011-08-22T13:55:02.867 回答