gpt4 book ai didi

c++ - 从包含 Unicode 字符的文件中读取

转载 作者:搜寻专家 更新时间:2023-10-31 01:12:28 24 4
gpt4 key购买 nike

我有一个巨大的文件,它的开头包含 unicode 字符串(第一个大约 10,000 个字符)我不关心 unicode 部分,我感兴趣的部分不是 unicode,但每当我尝试读取这些部分时,我都会得到 '=',如果我要将整个文件加载到char 数组并使用 ofstream 写入一些临时文件(不改变数据) 我得到的数据不正确 实际上我得到的只是一个充满 Í 的文本文件 如果我要手动删除 unicode 部分一切正常,所以似乎 ifstream 无法处理包含 unicode 数据的流,但如果这个假设成立,是否有任何方法可以处理这个文件,引入一个新的库来我的项目?

谢谢,

编辑:这是一个示例代码,程序从这个文件中读取包含不能用 ASCII 表示的字符(一些,不是全部)。

ifstream inFile("somefile");
inFile.seekg(0,ios_base::end);
size_t size = inFile.tellg();
inFile.seekg(0,ios_base::beg);
char *book = new char[size];
inFile.read(book,size);
for (int i = 0; i < size; i++) {
cout << book[i] << " " << i << endl; //book[i] will always be '='
}
ofstream outFile("TEST.txt");
outFile.write(book,size);
outFile.close();

最佳答案

Keith Thompson 的问题非常重要。根据 Unicode 编码,编写一个读取(并丢弃)Unicode 字符的小型 C 例程可能很简单,也可能稍微复杂一些。

假设编码是 UTF-8,您将无法确定何时停止丢弃,因为 ASCII 是 UTF-8 的子集,所以每当您遇到 ASCII 字符时,您可能会想说“就是这样” ,我们回到了 ASCII 领域”,下一个字符可能仍然在 ASCII 范围之外。

所以你需要读取文件并确定最后一个字符>127在哪里。之后的任何内容都是纯 ASCII——希望如此。

关于c++ - 从包含 Unicode 字符的文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697100/

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