我已经创建了学校管理系统,并且运行良好。我将学生的所有信息存储在文件中,并在打开时将它们读回程序。但是,我的问题是如何写入文件。如果有更好的方式写入文件。 此代码段不是我的程序中使用的代码段。这是一个简化的版本,可以说明我的观点。
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,但是没有运气。
答案 0 :(得分:1)
以csv格式存储会增加持久性。用逗号或分号分隔内容。 您还可以将它们另存为json-这样可以提供更高的安全性
当您要保留文件时,也许可以考虑定期备份文件。