在 Windows 上将 Unicode UTF-8 文件读入 Wstring
在 Windows 上将 Unicode (UTF-8) 文件读入 wstring 可以使用 C 11 的 std::codecvt_utf8 方面可以有效地实现。
使用 std::codecvt_utf8,可以简化 UTF-8 字节字符串与 UCS2 或 UCS4 字符串之间的转换。此构面支持读取和写入 UTF-8 文件(文本和二进制)。
要利用该构面,请创建一个区域设置对象,该对象封装定义所需本地化环境的构面。创建语言环境对象后,将其注入流缓冲区。
这是使用注入的实现:
#include <sstream> #include <fstream> #include <codecvt> std::wstring readFile(const char* filename) { std::wifstream wif(filename); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>)); std::wstringstream wss; wss << wif.rdbuf(); return wss.str(); }
注入流缓冲区后,将文件读入 wstring 非常简单:
std::wstring wstr = readFile("a.txt");
或者,在使用字符串流之前设置全局 C 语言环境将消除显式注入的需要:
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
这会将全局语言环境设置为默认值,这将自动适用于未来的流缓冲区。
以上是如何使用 C 11 在 Windows 上将 Unicode (UTF-8) 文件读入 wstring?的详细内容。更多信息请关注PHP中文网其他相关文章!