【发布时间】:2012-02-04 17:06:40
【问题描述】:
我想逐个字符地读取 Unicode 文件 (UTF-8),但我不知道如何逐个字符地读取文件。
谁能告诉我怎么做?
【问题讨论】:
-
您想读取单个 Unicode 字符或 utf-8 字节?
-
读取文件,然后将 UTF-8 转换为 UTF-32。您可以使用
iconv()、libicu 或 C++11。 -
@Kerrek SB C++11 包含这个吗?我们应该寻找什么类或函数?
-
@WTP:它应该在
<cuchar>,它实际上来自C99 支持。肯定有 UTF16 UTF32 支持;我现在不能 100% 确定是否还支持 UTF8。 -
C++11 确实支持 UTF-8。
codecvt<char32_t,char,mbstate_t>在 UTF-8 和 UTF-32 之间转换。您可以将它与wstring_convert一起使用,如下所示:wstring_convert<codecvt<char32_t,char,mbstate_t>,char32_t> convert; u32string s = convert.from_bytes("foo");