我不明白写入文件file.write((char *) this, sizeof(BOOK)) ;
的内容。请解释:))
void add_new_book(int tcode,char tname[33], char tauthor[26], float tprice, int tcopies, int tavail)
{
fstream file ;
file.open("BOOK.DAT", ios::app) ;
bookcode = tcode ;
strcpy(name,tname) ;
strcpy(author,tauthor) ;
price = tprice ;
copies = tcopies ;
avail = tavail ;
file.write((char *) this, sizeof(BOOK)) ; }
答案 0 :(得分:2)
据推测,您引用的函数是class BOOK
的成员函数,write
调用只会将当前BOOK
实例的整个二进制表示转储到文件中。 (this
的类型为BOOK*
。)
这通常不是一个非常便携或明智的事情,因为序列化数据的未来消费者无法知道实际的序列化格式。 (未来的消费者可能是在不同的机器上或不同的编译器上。)如果你想认真对待它,请查找正确的序列化策略。
答案 1 :(得分:0)
void add_new_book (BOOK &book){ // call the function as: add_new_book(book1);
fstream file ; // where book1 is an object of class BOOK
file.open("BOOK.DAT", ios::app) ;
bookcode = book.bookcode ;
strcpy(name,book.name) ;
strcpy(author,book.author) ;
price = book.price ;
copies = book.copies ;
avail = book.avail ;
file.write((char *)this, sizeof(BOOK)) ;
file.close() ; //don't forget to close the file
}