gpt4 book ai didi

c++ - 在 C++ 中打开 .dat 文件时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:51 25 4
gpt4 key购买 nike

所以基本上我试图在 .dat 文件中保存一个类,但在我的代码中却显示此错误 No matching member function for call to 'open' 但我放置了 fstream header 。不知道是不是我写错了。我使用 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));




}

最佳答案

你很幸运被一个简单的错误阻止了。 @Alex44 已经展示了如何消除错误:

f.open ("information.dat",ios::app|ios::binary); //this is where I get the error. 

但下面这行更糟:

f.write((char*)&k,sizeof(k));

因为编译器不会显示任何错误,同时字符串的内容也不会保存在文件中。 std::string 不是简单可复制的,因此 memberinformation 类也不是。因此,您不应尝试将其作为原始字节写入文件。

您应该改为编写一个写入二进制流的序列化函数(只是一种可能的序列化方式):

  • phonenumber 作为 long int(没问题)
  • memberid 作为 int(没问题)
  • name.size 作为 size_t
  • name.dataname.size 字节

关于c++ - 在 C++ 中打开 .dat 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com