gpt4 book ai didi

c++ - 读取二进制文件时输出不一致

转载 作者:行者123 更新时间:2023-11-28 01:59:52 25 4
gpt4 key购买 nike

改编我在SO中看到的一些代码,我得出了以下解决方案:

fstream file("sample.bin", ios::binary | ios::in | ios::ate);

unsigned char charsRead[(int)file.tellg()];

file.read((char *) &charsRead, sizeof(char*));
for(int i=0; i<sizeof(charsRead); i++)
cout << (int) charsRead[i] << endl;
file.close();

它确实可以编译,但每次执行时,都会返回不同的输出。有谁知道为什么会这样?

最佳答案

我假设前 4(或 8)个字节永远相等,并且不同的输出从第 5 个或第 9 个字节开始。

正如 πìντα ῥεῖ 所指出的,您阅读了 sizeof(char*)字节(通常是 4 或 8 个字节)然后打印 sizeof(charsRead)字节。

如果sizeof(char*) < sizeof(charsRead) (也就是说:如果文件的 dim 大于 4 或 8),你写

  • sizeof(char*)初始化字符
  • sizeof(charsRead) - sizeof(char*)未初始化的字符(因此,随意值)。

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

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