【求助】C++文件操作
#include<iostream>
#include<fstream>
using namespace std;
struct student
{
string name;
string score;
};
int main()
{
ofstream out;
ifstream in;
//!!!!!!!!!!!!!!!
student data[4]={"Xietin","90","HUlin","88","Weiwei","96","Libai","99"};
//初始化的数据
out.open("E:\\s.dat",ios::out|ios::binary);
//在E盘打开一个二进制文件用于保存
if(!out) return 0;
for(int i=0;i<4;i++)
out.write((char*) &data[i],sizeof(data[i]));
out.close();
//!!!!!!!!!!!!!!!!!!
in.open("E:\\s.dat",ios::in|ios::binary); //读取
if(!in) return 0;
student temp;
for(int i=0;i<4;i++)
{
in.read((char*)&temp,sizeof(temp));
cout<<temp.name<<' '<<temp.score<<endl; //输出
}
in.close();
return 0;
}
第一遍运行没有问题的 但是把两行感叹号中间那段代码删除了再运行第二遍就会出错
文件不是还在那么 为什么读不出来了
[解决办法]
摒弃fstream
使用FILE *
[解决办法]
对象不能这么写到文件噢, 你要了解string是一个类对象, 它的实现是什么样呢, 有了解过吗.
[解决办法]
struct student
{
char name[20];// 修改处
char score[20];// 修改处
};
ofstream out;
ifstream in;
/!!!!!!!!!!!!!!!
student data[4]={{"Xietin","90"},{"HUlin","88"},{"Weiwei","96"},{"Libai","99"}}; // 修改处
编译通过没问题!!!!!!!!!!!!!!!!!!!!!!!