为什么在 C++ 的 write() 函数中使用 (char *)

Why (char *) is used in write() function in C++?

本文关键字:char 函数 write 为什么 C++      更新时间:2023-10-16
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型演员表的危险性略低,也更明显。

因为fstream.write需要一个char*作为它的第一个参数。

ostream& write (const char* s, streamsize n);