将类数据存储到文件的最有效方法

时间:2019-08-09 15:33:18

标签: c++ writefile

我已经创建了学校管理系统,并且运行良好。我将学生的所有信息存储在文件中,并在打开时将它们读回程序。但是,我的问题是如何写入文件。如果有更好的方式写入文件。 此代码段不是我的程序中使用的代码段。这是一个简化的版本,可以说明我的观点。

Person.h

#ifndef PERSON_H_INCLUDED
#define PERSON_H_INCLUDED

#include <sstream>

class Person
{
 public:
   std::string name;
   std::string gender;
   std::string mationality;

   void registerInfo(std::string person_info);

   friend std::ostream& operator << (std::ostream& os, Person& p);
 }
 #endif 

Person.cpp

#include "Person.h"

using std::string;
using std::stringstream;
using std::ostream;

void Person::registerInfo(string person_info)
{
   stringstream info (person_info);

   info >> name >> gender >> mationality;
}

ostream& operator << (std::ostream& os, Person& p)
{
   os << p.name << " " << p.gender << " " << p.nationality;
}

main.cpp

#include <iostream>
#include <fstream>
#include "Person"

using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::ifstream;
using std::ofstream;

int main()
{
   Person p;
   string name, gender, nationality

   cout << "Enter name: ";
   cin >> name;
   cout << "Enter gender: ";
   cin >> gender;
   cout << "Enter Nationality: ";
   cin >> nationality;

   string person_info = name + " " + gender + " " + nationality;

   p.registerInfo(person_info);

   ofstream file_out("Person.txt");

   file_out.close();

   ifstream file_in("Person.txt");

   Person p1;

   string line;

   if (file_in.good)
     while (! file_in.eof())
     {
        getline(file_in, line);

        p1.registar(line);
      }

   file_in.close();

   cout << endl << endl;

   cout << "Name: " << p1.name << endl;
   cout << "Gender: " << p1.gender << endl;
   cout << "Nationality: " << p1.nationality<< endl;

   return 0;
} 

您会看到我是否输入Alex作为姓名,输入Male表示性别,输入Angolan表示国籍。 信息将存储在Person.txt中,如下所示:

亚历克斯·马累·安哥拉

在我的程序中,班级的所有学生都存储在一个文件中,班级通常包含数十名学生,如果有人弄乱了文件的内容,擦除了空白或在程序中添加了一个信息,阅读会受到损害。

我的问题是,是否有更好的方法来存储可消除此问题的类数据。也许用分号或逗号。 到目前为止,我一直在搜索Google,但是没有运气。

1 个答案:

答案 0 :(得分:1)

以csv格式存储会增加持久性。用逗号或分号分隔内容。 您还可以将它们另存为json-这样可以提供更高的安全性

当您要保留文件时,也许可以考虑定期备份文件。