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/

10-09 18:33