【发布时间】:2019-08-04 13:43:10
【问题描述】:
所以基本上我试图将一个类保存在 .dat 文件中,但在我的代码中,但它显示此错误 No matching member function for call to 'open' 但我放置了 fstream 标头。不知道是不是我写错了。我使用 Xcode 10。
class memberinformation
{
string name; //name
long int phonenumber; // phone number
int memberid; // member id
public :
memberinformation()
{ name="not assigned" ;
phonenumber=0;
memberid=0;
}
int option3();
int option2();
int option1();
int option4();
};
void wrt_file() //file function
{
memberinformation k;
fstream f;
f.open ("information.dat",ios::app,ios::binary) //this is where I get the error.
f.write((char*)&k,sizeof(k));
}
【问题讨论】:
-
好吧,一方面 f.open() 缺少分号
-
open需要 2 个参数,你传递 3,我猜你想传递ios::app | ios::binary而不是ios::app,ios::binary作为第二个参数。阅读序列化方法,你不能将string对象存储到write()的二进制文件中。 -
“但它说这个错误” - 这与
.dat文件有什么关系?什么是.dat文件?文件扩展名意味着nothing。如果需要,您可以将 GIF 图像存储在名为.doc的文件中。你的真正问题是什么? -
还要注意,当你成功编译并运行这个程序,然后尝试从文件中读取来恢复你的对象时,鼻恶魔会来咬你。
-
如果你幸运的话,你会得到一个鼻恶魔的
phonenumber。在那种情况下,不要称之为:P