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

哪位高手能解释下这个有关问题

2012-05-06 
谁能解释下这个问题?建立一个Goods类的数组,在数组中输入成员变量,然后输出到文件中。在从文件中读入,然后

谁能解释下这个问题?
建立一个Goods类的数组,在数组中输入成员变量,然后输出到文件中。在从文件中读入,然后现实。为什么会出现异常
Unhandled exception at 0x5a9bad54 (msvcp100d.dll) in IO.exe: 0xC0000005: Access violation writing location 0xfeeefeee.

另外问一下,像这样的错误如何调试。我现在碰到这样的问题就是一头雾水,不知道如何下手。

#include <iostream> 
#include <fstream> 
#include <string> 
#define MAX 3
using namespace std;
class Goods 

int Num; 
string Name; 
string Infor; 
public:
void Init(string name, string infor,int num=0) //默认形参的构造函数

Num=num;
Name=name;
Infor=infor; 
}
void print() 

cout<<Num<<'\t'<<Name<<'\t'<<Infor<<endl; 
}
};

void main() 

Goods goods[MAX]; 
int num; 
string name,infor,filename; 
cout<<"请输入货物相关信息(编号、货物名、货物介绍):"<<endl; 
for(int i=0;i<MAX;i++) 

cin>>num>>name>>infor;  
goods[i].Init(name,infor,num); 

cout<<"建立文件的文件名:"<<endl; 
cin>>filename; 
ofstream file(filename,ios::out); 
if(!file)

cerr<<"文件打开失败"<<endl; 
return;
}
for(int i=0;i<MAX;i++) 
file.write((char*)(goods+i),sizeof(Goods)); 
file.close();
ifstream file1(filename,ios::in);
if(!file1) 

cerr<<"文件打开失败"<<endl; 
return; 
}
Goods temp[MAX];
file1.read((char*)temp,sizeof(temp)); 
for(int i=0;i<MAX;i++) 
temp[i].print(); 
file1.close();
}

[解决办法]
在Linux下试,没有遇到楼主所说的问题。
[code=C/C++]
#include <iostream>
#include <fstream>
#include <string>
#define MAX 3
using namespace std;
class Goods
{
int Num;
string Name;
string Infor;
public:
void Init(string name, string infor,int num=0) //默认形参的构造函数
{
Num=num;
Name=name;
Infor=infor;
}
void print()
{
cout<<Num<<'\t'<<Name<<'\t'<<Infor<<endl;
}
};

int main()
{
Goods goods[MAX];
int num;
string name,infor,filename;
cout<<"请输入货物相关信息(编号、货物名、货物介绍):"<<endl;
for (int i=0;i<MAX;i++)
{
cin>>num>>name>>infor;
goods[i].Init(name,infor,num);
}
cout<<"建立文件的文件名:"<<endl;
cin>>filename;
ofstream file(filename.c_str(),ios::out);
if (!file)
{
cerr<<"文件打开失败"<<endl;
return -1;
}
for (int i=0;i<MAX;i++)
file.write((char*)(goods+i),sizeof(Goods));
file.close();
ifstream file1(filename.c_str(),ios::in);
if (!file1)
{
cerr<<"文件打开失败"<<endl;
return -1;
}
Goods temp[MAX];
file1.read((char*)temp,sizeof(temp));
for (int i=0;i<MAX;i++)
temp[i].print();
file1.close();

return 0 ;
}
[/code
$./test
请输入货物相关信息(编号、货物名、货物介绍):
1
aa
aaa
2
bb
bbb
3
cc
ccc
建立文件的文件名:
test.txt
1aaaaa
2bbbbb
3ccccc
$
[解决办法]
试试把你写入文件的循环直接写成整个数组输出到文件,其实没问题的
[解决办法]
ifstream file1(filename,ios::in);
这个编译器不报错吗?
------解决方案--------------------


ofstream file(filename.c_str(),ios::out);

热点排行