我有一个结构
struct details
{
std::string username;
std::string password;
bool isActive;
};
struct details v_Details;
我希望将这些数据写入文件,然后在代码中的其他位置读取它作为存储详细信息的方法。我尝试过使用std :: write这似乎可以完成它的工作
std::ofstream out_file;
out_file.open ("db.dat" , ios::out | ios::binary)
out_file.write((char*)&v_details , sizeof (struct details))
但是当我尝试读取数据时,它只读取用户名和密码然后崩溃。
我阅读的部分代码如下
std::ifstream in_file;
in_file.open (fileName.c_str() , std::ifstream::in);
std::string readFileLine = "\0";
if (in_file.is_open())
{
do
{
in_file.read ((char*)&details , sizeof(details));
cout << "\nDEBUG message-> " << __FILE__ <<" : " << __func__ << " : " << __LINE__ << " : Read - "<< details.username << " " << details.password << " " << isActive ;
}while (!in_file.eof());
in_file.close();
}
任何可以提供帮助并为我提供解决方法的人。
答案 0 :(得分:0)
当您拥有没有固定大小的成员时,您无法直接编写该对象并希望它能正确存储所有内容。
如果它是char
数组,您可以使用这种方式。
鉴于这种情况,我会首先手动编写详细信息,如username
的长度,然后在username
中写入字符,以便在阅读时我可以读取用户名的长度并读取该字符数来自档案。