本人正在学c++的关于文件的问题,按照书上的写了一个差不多的程序,发现把注释的那几行代码一起运行没错,把他们注释就出问题了,运行不了,求大神解惑.
#include
#include
#include
using namespace std;
class student
{
public:
student(){num=0;name="00";}
student(int nu,string na):num(nu),name(na) {}
void output();
void input();
private:
int num;
string name;
};
void student::input ()
{
cout<<"please input the num:"< cin>>num;
cout<<"please input the name:"< cin>>name;
}
void student::output ()
{
cout<<num<<" "<<name<<endl;
}
int main()
{
// student a[5];
// ofstream outfile("111111.dat",ios::binary);
// if(!outfile)
// {
// cerr<<"open error!"<<endl;
// abort();
// }
// for(int i=0;i<5;i++)
// {
// a[i].input ();
// }
// outfile.write ((char*)&a[0],sizeof(a));
// outfile.close();
student b[5];
ifstream infile("111111.dat",ios::binary);
if(!infile)
{cerr<<"open error!"<<endl;
abort();
}
// infile.read((char*)&b[0],sizeof(b));
for(int m=0;m<5;m++)
{
infile.read((char*)&b[m],sizeof(b[m]));
b[m].output();
}
infile.close ();
return 0;
}
ifstream只能用于输入,ofstream输出。
感觉ifstream,ofstream用对了啊
(char*)&b[m]
b不是student么?怎么转换成char
只要运行一次,让文件里存上信息后,第二次有没有注释的那几行应该都没问题
追加,你读两遍是什么情况?
infile.read((char*)&b[0],sizeof(b));
上面是第一遍
下面是第二遍:
for(int m=0;m<5;m++)
{
infile.read((char*)&b[m],sizeof(b[m]));
b[m].output();
}
要读文件,首先文件得存在并且里边有你要的数据。