person pers;
pers.getData();
fstream fs("person.txt", ios::out | ios::in | ios::binary | ios::app);
fs.write((char*)&pers, sizeof(pers));
我试图弄清楚为什么在写入文件时需要将对象(&pers)的地址强制转换为指向字符的指针?
最佳答案
因为这就是声明write
的方式:
basic_ostream& write(const char_type* s, streamsize n);
它将字符数组写入流中。如果您想(ab)使用它来写其他类型的字节,那么您将需要一个狡猾的演员表来假装它是一个字符数组。
就个人而言,我会使用
reinterpret_cast
:与C样式的强制转换相比,它的危险性要小得多,而显而易见。关于c++ - 为什么在C++的write()函数中使用(char *)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21909334/