读书人

C++文件操作

发布时间: 2012-06-03 16:59:40 作者: rapoo

【求助】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"}}; // 修改处

编译通过没问题!!!!!!!!!!!!!!!!!!!!!!!

读书人网 >C++

热点推荐