C++的读文件问题 我写了一个read函数想从文件中读取类,但read函数一结束就程序终止了,但第一次读取成功
第二次就不行了。调试:C++课程设计_图书管理系统.exe中的0x507dad4a(msvcp100d.dll)处最可能的异常:0xC0000005:读取位置0x004b...
第二次就不行了。
调试:
C++课程设计_图书管理系统.exe 中的 0x507dad4a (msvcp100d.dll) 处最可能的异常: 0xC0000005: 读取位置 0x004b8084 时发生访问冲突
C++课程设计_图书管理系统.exe 中的 0x507dad4a (msvcp100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x004b8084 时发生访问冲突
void read()
{
Book t[100];
Book temp;
int num;
ifstream inFile;
ifstream in("E:\\log.txt");
in>>num;
in.close();
cout<<num;
system("pause");
inFile.open("E:\\log.lc",ios::in | ios::binary );
for(int n=0;n<num;n++)
{
temp=t[n];
inFile.read((char *)&temp,sizeof(temp));
temp.show();
inFile.clear();
}
inFile.close();
}
关闭了的,刚刚没发全 展开
调试:
C++课程设计_图书管理系统.exe 中的 0x507dad4a (msvcp100d.dll) 处最可能的异常: 0xC0000005: 读取位置 0x004b8084 时发生访问冲突
C++课程设计_图书管理系统.exe 中的 0x507dad4a (msvcp100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x004b8084 时发生访问冲突
void read()
{
Book t[100];
Book temp;
int num;
ifstream inFile;
ifstream in("E:\\log.txt");
in>>num;
in.close();
cout<<num;
system("pause");
inFile.open("E:\\log.lc",ios::in | ios::binary );
for(int n=0;n<num;n++)
{
temp=t[n];
inFile.read((char *)&temp,sizeof(temp));
temp.show();
inFile.clear();
}
inFile.close();
}
关闭了的,刚刚没发全 展开
4个回答
展开全部
需要知道你的Book是怎么定义的。
如果有string的话,你读入和写出时不能直接使用inFile.read((char *)&temp,sizeof(temp));
因为string里面是存储的数据指针
如果有string的话,你读入和写出时不能直接使用inFile.read((char *)&temp,sizeof(temp));
因为string里面是存储的数据指针
更多追问追答
追问
嗯,里面有sring 类的数据
public:
Book();
~Book();
void set();//修改函数
void show();//显示函数
friend std::ostream& operator<<(std::ostream&, Book&);
Book& operator = (Book &s);
private:
string name;//书名
string author;//作者
string ISBN;//书号
string press;//出版社
int pubtms;//版次
int pubtm;//出版时间
string lib_isbn;//馆藏编号
int num;//藏书数目
追答
因为有string类型,所以你不能直接read和write。
对于string类型,一般要求,写到文件时先写字符串长度,后写字符串内容。读的时候则是先读字符串长度,根据字符串长度准备空间后再读内容到string中。
要么你也可以把string改成char xxx[N]
展开全部
用struct来读取很写入,你的CUser字段定义有问题,不能用CString这些,要用char m_username[20]并要指定大小,否则内存格式化会乱掉
追问
用struct来读取很写入?(我用class定义了一个类,里面确实有string类型的数据成员)什么意思?你是要我把里面的string类型的数据成员改成char数组?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没有把文件关闭。
在read函数的最后,
加一句inFile.close();
试试看
在read函数的最后,
加一句inFile.close();
试试看
追问
关闭了的,刚刚没发全
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在read函数的最后,
加inFile.close();
加inFile.close();
追问
关闭了的,刚刚没发全
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询