怎么 用 fstream 读取二进制格式文件的一行?
怎么 用 fstream 读取二进制格式文件的一行?一行代表一个类,其中有各个数据成员。
请问我的这种存储方式合理吗?二进制格式文件,一行一个类,如果某行有错误,丢弃,再读下一行,也就是下一个类的数据。这样可以清楚边界问题。
[解决办法]
所以,在你的情况下:
input_file.read( (char *)(&classbuffer), sizeof(class) ); //读取一个类的数据
[解决办法]
要把类或结构体的实例内容写入文件中,最好成员变量都是基本的数据类型,不要有指针类型,否则需要做序列化的工作了.
其实二进制文件,一般就以数据的长度来写入和读取,不需要关心是否换行的问题.
struct rectangle
{
int height;
int width;
};
rectangle rr;
//把结构体数据写入文件中
for(int i =0 ;i <10;++i)
{
rr.height = 10+i;
rr.width = 10+i;
outfile.write((char*)&rr,sizeof(rr));
}
//读取文件中的结构体数据
while(!infile.eof())
{
rectangle rtemp;
infile.read((char*)&rtemp,sizeof(rtemp));
if(infile.fail())
break;
//do something.....
}
////////////////////////////////////////////////////////////
网络发送就是发送一段内存数据,其实跟把数据写入文件中差不多
char szSendBuff[1400];
memset(szSendBuff,0,sizeof(szSendBuff));
//先把要发送的数据COPY到发送缓冲块中,
memcpy(szSendBuff,&rr,sizeof(rr));
然后把发送缓冲块的地址和有效数据长度,给socket的send()即可.