gpt4 book ai didi

c++ - 读取二进制文件 C++

转载 作者:行者123 更新时间:2023-11-30 03:08:13 24 4
gpt4 key购买 nike

我想寻求帮助...我从 C++ 开始,我在学校做了这个作业...我们必须编写函数 bool UTF8toUTF16 (const char * src , const char * dst ); 应该读取以 UTF-8 编码的 src 文件并将其写入 dst 文件,但以 UTF-16 编码。我们也不能在我的代码中使用任何其他库...

所以我要做的第一件事是创建一个文件“xx.txt”,然后在经典的 Windows 记事本中我在那里写,例如 char 'š'。然后我试图编写一个程序,以二进制模式逐字节(或逐字节)读取此文件的每个字符并打印它的值......但我的程序不像那样工作......

< p>所以我有这个文件“xx.txt”,其中只有“š”具有 UTF-8 值“c5 a1”、UTF-16 值“0161”和 Unicode 值“161”,我想它会打印结果:我= 161(十六进制)或至少接近此结果的东西......

到目前为止,这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
#include <iostream>
#include <fstream>

using namespace std;

int main ( void ) {
char name[] = "xx.txt";
fstream F ( name, ios::in | ios::binary );
unsigned int i;
while( F.read ((char *) & i, 2))
/* I dont know what size to write there - I would guess it s '2' - because I need 2 bytes for the char with hexUTF-16 code '0161', but 2 doesnt work*/
cout << "i = " << hex << i << " (hex) ";
cout << endl;
F.close();
system("PAUSE");
return 0;}

提前致谢

尼古拉斯·吉萨

最佳答案

在完成解析之前,您不知道 utf8 中的一个字符有多大,您需要一次读取一个“chars”,直到您拥有一个完整的 utf8 字符。

编辑 - 你没有说出你得到的输出 - 但我怀疑这是一个字节顺序问题。
您最好将输入(如果您知道它始终是 16 位值)读入 char 数组,然后查看各个字节。

参见 http://www.joelonsoftware.com/articles/Unicode.html

关于c++ - 读取二进制文件 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249026/

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