gpt4 book ai didi

c++ - 将整个 UTF-8 文件读入 std::string

转载 作者:行者123 更新时间:2023-11-28 01:22:13 26 4
gpt4 key购买 nike

我在 ASCII 文件中使用了以下内容:

#include <fstream>
#include <streambuf>
#include <string>
#include <cerrno>

std::string get_file_contents(const char *filename)
{
std::ifstream in(filename, std::ios::in | std::ios::binary);
if (in)
{
return(std::string((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>()));
}
throw(errno);
}

我想确认它是否适用于 UTF-8 文件以及 std::string 还是有任何特殊设置?

最佳答案

像这样读取所有UTF-8字符就可以了;毕竟它只是一个字节序列,只有当您进一步处理、转换或输出文本时,您才需要确保考虑到编码。

一个潜在的陷阱是 BOM ( https://en.wikipedia.org/wiki/Byte_order_mark )。如果您的文本文件有 BOM,那么您可能需要手动将其从字符串中删除或对其进行适当处理。应该不需要将 BOM 与 UTF-8 一起使用,但一些软件可能会这样做以区分编码类型。例如,Windows 上的记事本保存 BOM(让记事本以 UTF-8 编码保存文件,然后在二进制编辑器中打开文件进行检查)。

关于c++ - 将整个 UTF-8 文件读入 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55582966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com