gpt4 book ai didi

c++ - 从文件中读取字节到数组变量 C++

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

这是我对 this question 的后续问题

当我尝试这样做时:

int main ( void ) {
fstream F ( soubor1, ios::out | ios::binary );
unsigned int x = 0xc4;
F.write ( ( char * ) &x, 1 );
x = 0x8d;
F.write ( ( char * ) &x, 1 );
F.close();
F . open ( soubor1, ios::in | ios::binary );
while ( F. read ( (char * ) & x, 1) )
cout << x << " ";
return 0;}

它的工作方式和我想象的一样......但是当我这样做时:

int main ( void ) {
fstream F ( soubor1, ios::out | ios::binary );
unsigned int x = 0xc4;
F.write ( ( char * ) &x, 1 );
x = 0x8d;
F.write ( ( char * ) &x, 1 );
F.close();
F . open ( soubor1, ios::in | ios::binary );
unsigned int a[2]; //or unsigned int * a = new unsigned int[2];
while ( F. read ( (char * ) & a[0], 1) )
cout << a[0] << " ";
return 0;}

.. 所以它不打印“196 141”...但是一些疯狂的数字...

提前致谢,

尼古拉斯·吉萨

最佳答案

a[0] 在读取之前没有初始化,所以这个值是垃圾。然后,您将 char 读入 a[0] 的第一个字节,以便获得正确的值,但其余部分则不然。

您应该使用 char 而不是 int,因为 int 通常较大(它们通常占用一个大小在现代平台上是 char 的 4 或 8 倍)。

与您的想法相反,在 read 之前将 a[0] 设置为 0 也无济于事,至少没有帮助便携,因为endianness问题。

关于c++ - 从文件中读取字节到数组变量 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5261427/

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