c ++什么是fstream写入函数写入文件(后面的coden)

时间:2011-11-27 16:05:54

标签: c++ fstream

我不明白写入文件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)) ; }

2 个答案:

答案 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 
    }