C++ 如何将结构数组写入二进制文件并再次读取?
我正在将数组af structures(factor是一个结构)写入一个二进制文件,如下所示:C++ 如何将结构数组写入二进制文件并再次读取?,c++,arrays,file,struct,C++,Arrays,File,Struct,我正在将数组af structures(factor是一个结构)写入一个二进制文件,如下所示: factor factors[100]; ofstream fa("Desktop:\\fa.dat", ios::out | ios::binary); fa.write(reinterpret_cast<const char*>(&factors),sizeof(factors)); fa.close(); if(a) { a.read(reinterpret_ca
factor factors[100];
ofstream fa("Desktop:\\fa.dat", ios::out | ios::binary);
fa.write(reinterpret_cast<const char*>(&factors),sizeof(factors));
fa.close();
if(a)
{
a.read(reinterpret_cast<char*>(&undelivered_Factors),sizeof(undelivered_Factors));
}
for(int i=0; i<100; ++i)
{
cout<<undelivered_Factors[i].ID<<"\t"<<undelivered_Factors[i].total_price<<endl;
}
因子[100];
流fa(“桌面:\\fa.dat”,ios::out | ios::binary);
fa.写入(重新解释铸件和系数)、尺寸(系数);
fa.close();
我运行程序并在其中保存了5条记录。在另一个文件中,我想读取结构,所以我写了以下内容:
int i=0;
ifstream a("Desktop:\\fa.dat", ios::in | ios::binary);
factor undelivered_Factors[100];
while(a && !a.eof()){
a.read(reinterpret_cast<char*>(&undelivered_Factors),sizeof(undelivered_Factors));
cout<<undelivered_Factors[i].ID<<"\t"<<undelivered_Factors[i].total_price<<endl;
i++;
}
a.close();
inti=0;
ifstream a(“桌面:\\fa.dat”,ios::in | ios::binary);
未交付因子_因子[100];
while(a&!a.eof()){
a、 读取(重新解释铸件和未交付系数)、尺寸(未交付系数);
coutofstream::write and::read的第二个参数是以字节为单位的写入内存大小(在C\C++中称为“char”),这是正确的-您正在一次写入整个数组。在读取过程中,您将每个元素和数组处理混合在一起。您希望读取整个数组,然后打印一个值,然后读取另外100条文件中没有的记录,我猜。还有eof()仅当您尝试读取但失败时才会发生。如果您站在文件末尾,则不会触发eof(),这就是为什么会打印两条记录。您在单个调用中执行完全读取,因此循环只运行一次,因此它将只输出第一个结构值。按如下方式更改您的while循环:
factor factors[100];
ofstream fa("Desktop:\\fa.dat", ios::out | ios::binary);
fa.write(reinterpret_cast<const char*>(&factors),sizeof(factors));
fa.close();
if(a)
{
a.read(reinterpret_cast<char*>(&undelivered_Factors),sizeof(undelivered_Factors));
}
for(int i=0; i<100; ++i)
{
cout<<undelivered_Factors[i].ID<<"\t"<<undelivered_Factors[i].total_price<<endl;
}
if(a)
{
a、 读取(重新解释铸件和未交付系数)、尺寸(未交付系数);
}
对于(int i=0;我只需调用一次read()
。我应该怎么做才能只读取数组中记录的值?