read 函数的第一个参数是指向一个数组的指针,用于在文件中存储 n 个字节(第二个参数提到的)......
查询是,
如果我创建了 2 个 x 类的对象..
然后,
x stack[2];
假设我已经填充了 2 个对象的内容,打开了一个文件“xyz”(使用 fstream,我创建了对象文件并使用了命令file.open("xyz",ios::in|ios::out)
并使用 write 用 2 个对象的内容填充了文件。
现在如果我使用这个命令
file.read((char*) &stack[1],sizeof(stack[0]))
会有, stack[1]
_stack[0]
即读取函数会将其第一个参数地址作为&stack[1]
还是会考虑&stack[0]
?
更新:用于反转堆栈内容的代码
// //反转对象的内容
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
class Inventory
{
char name[10];
int code;
int cost;
public:
void readdata();
void writedata();
};
void Inventory::readdata(void)
{
cin>>name;
cin>>code;
cin>>cost;
}
void Inventory::writedata(void)
{
cout<<setiosflags(ios::left)
<<setw(10)<<name
<<resetiosflags(ios::right)
<<setw(10)<<code
<<setprecision(2)
<<setw(10)<<cost
<<endl;
}
int main()
{
Inventory item[3];
fstream file;
file.open("Stock",ios::in|ios::out);
cout<<"Enter details for three items\n";
for(int i=0;i<3;i++)
{
item[i].readdata();
file.write((char*) &item[i],sizeof(item[i]));
}
file.seekg(0);
cout<<"\nOutput\n\n";
for(int i=0;i<3;i++)
{
file.read((char*) &item[2-i],sizeof(item[i]));
}
for(int i=0;i<3;i++)item[i].writedata();
file.close();
return 0;
}