首页 > 后端开发 > C++ > 如何使用 C 11 在 Windows 上将 Unicode (UTF-8) 文件读入 wstring?

如何使用 C 11 在 Windows 上将 Unicode (UTF-8) 文件读入 wstring?

Patricia Arquette
发布: 2024-11-06 07:26:02
原创
992 人浏览过

How to Read Unicode (UTF-8) Files into wstrings on Windows with C  11?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板