首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++文件操作

2012-06-03 
【求助】C++文件操作#includeiostream#includefstreamusing namespace stdstruct student{string name

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

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

热点排行