我正在尝试使用fstream读取二进制文件,我之前在那里写过一些数据。
问题是在到达功能结束后,主题中的消息显示
代码如下:
ifstream in("contrib.bin", ios::in | ios::binary );
char *nume, dim;
in.read((char*)&dim, sizeof(int));
nume = new char[dim + 1];
in.read(nume, dim);
nume[dim] = '\0';
double imp;
in.read((char*)&imp, sizeof(double));
delete [] nume;
现在,我完成了我的作业并寻找了这个问题,但是面对它的其他人有数组,而我的变量是一个简单的字符。
有人能指出我正确的方向吗?
答案 0 :(得分:13)
代码
char dim;
in.read((char*)&dim, sizeof(int));
定义一个1字节的char然后读入sizeof(int)
个字节(可能大于1)。这是无效的,可能会破坏您的筹码。
如果您需要阅读sizeof(int)
字节,请将dim
声明为int
。否则,将读取的字节数更改为1.最好还使用sizeof(dim)
来确保只读取为存储空间提供的字节数:
in.read((char*)&dim, sizeof(dim));
答案 1 :(得分:7)
in.read((char*)&dim, sizeof(int));
不正确,dim
仅保留sizeof(char)
,但您尝试将sizeof(int)
读入其中。
此后所有手套都关闭。
答案 2 :(得分:2)
你定义一个字符,然后读取int的大小。这将是第一个问题
char *nume, dim;
in.read((char*)&dim, sizeof(char));