作为赋值的一部分,我需要从二进制文件读取数据,该文件由数据的数据类型int
,char
组成。这个二进制文件分成96个字节的记录。我正试图将这96个字节读入一个char
缓冲区,然后根据我拥有的信息尝试分割它们。但是当我尝试从缓冲区中获取int
值时,我什么也没得到。你能帮我吗?C++文件操作
#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;
int main()
{
char buffer[100];
char *p;
char temp[10];
int val;
fstream ifs,ofs;
ifs.open("write.bin",ios::binary);
if(ifs.read(buffer,96))
{
cout << "READ" << endl;
}
p = buffer;
memcpy(temp,buffer,4);
cout << temp << endl;
val = atoi(temp);
cout << val << endl;
}
我用strncpy
也很到位的memcpy
。 val
的输出为0,temp
的输出为空。
如果您向我们显示您遇到问题的代码,我们可能会提供帮助。 – 2012-04-03 13:40:32
难道你不会忘记'ifs.open(...)'中的'ios :: in'标志吗?尝试'做ifs.seekg(0);'在调用'ifs.read(...)'之前。 – vissi2 2012-04-03 14:17:53
你的记录结构如何?看起来,你正在尝试读取字符串,其中的数据可能是一些二进制表示。 – Matthias 2012-04-03 15:19:58