VC++二进制文件的读写问题

我自己定义了一个类:classBookData{private:stringisbn;stringbookTitle;stringauthor;stringpublish... 我自己定义了一个类:
class BookData
{
private:
string isbn;
string bookTitle;
string author;
string publisher;
string dateAdded;
int qtyOnHand;
static double wholesale;
static double retail;
public:
BookData();
int returnIsbn();
string returnBookTitle();
string returnAuthor();
string returnPublisher();
string returnDateAdded();
};

并通过:
short int numOfBooks;
cout<<"请输入所要增加图书的数目:";
cin>>numOfBooks;

for (int i=0; i<numOfBooks; i++)
{
cout<<"请输入第"<<i+1<<"本书的信息:\n";
system("pause");
BookData bk;

fstream file;
file.open("BookLibrary.dat",ios::in|ios::out|ios::app|ios::binary);
if(!file)
{
cout<<"BookLibrary.dat can't open.\n";
abort();
}

file.write((char *)&bk,sizeof(bk));

file.close();
}
将数据保存到二进制文件中。

可是我不知道该怎样把他们读取出来, 请好心人指教~~
没有积分了~~ 万分感谢帮忙~~ 以后一定补上~~~
2楼的意思是说我应该把string类型的改为字符数组么? 这样可以么?
展开
 我来答
therandomworld
2009-07-04 · TA获得超过812个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:548万
展开全部
你的class里面成员也有class,所以直接用write函数可能会出问题,对于这种情况可以使用MFC提供的“序列化”的功能,把一个class写入二进制文件

如果class里面的成员全是基本数据类型,用write函数写入文件不会出问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PLigt
2009-07-05 · TA获得超过677个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:381万
展开全部
你的我也不看了,给你个简单的例子,自己琢磨吧!
#include <iostream>
#include <fstream>
using namespace std;

struct student
{
int ID;
int age;
};

void main()
{

student st;
st.ID = 0;
st. age = 18;
ofstream ofs("1.data", ios::binary | ios::out);
ofs.write((char*)&st, sizeof(st));
ifstream ifs("1.data", ios::binary | ios::in);
ifs.read((char*)&st, sizeof(st));
cout<<st.age<<endl<<st.ID<<endl;
}

注意不要用 fstream
用ifstream(输入流) 和 ofstream(输出流)
fstream很容易出错
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rax1686
2009-07-04 · TA获得超过176个赞
知道答主
回答量:98
采纳率:0%
帮助的人:0
展开全部
对二进制的读写主要用iostream类成员函数read和write莱实现。这两个成员函数的原型为:
istream&read(char*buffer,int len);
ostream&write(const char* buffer,int len);
字符指针buffer指向内存一段存储空间。len是读写的字节数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2009-07-04 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4448万
展开全部
用write写就用read读嘛。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式