我无法弄清楚如何将所有信息正确输出到文本文件

I cant figure out how to get all of my information to output to the text file correctly

本文关键字:信息 输出 文件 文本 弄清楚      更新时间:2023-10-16

我正在从事此项目,我不知道如何将所有信息放在文本文件中,似乎只输出了最后的信息是输入。在平均输出之前放入新标头之前,我只能设法将其放置在文本文件中。请帮我!

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
class FamilyMember
{
    private:
        int age;
        string name;
    public:
        FamilyMember();
        ~FamilyMember(){}
    void setName(string memberName)
    {name = memberName;}
    void setAge(int memberName)
    {age = memberName;}
    int getAge()
    {return age;}
    string getName()
    {return name;}
    void printFamilyMemberInfo();
};
FamilyMember::FamilyMember()
{
    age = 0;
}
void FamilyMember::printFamilyMemberInfo()
{
    ofstream dataFile;
    dataFile.open("myFamily.txt", ios::out);
    dataFile << name << endl;
    dataFile << age << endl;
}
int main()
{
    vector<FamilyMember> list;
    string Name;
    int Age, x, n;
    fstream dataFile;
    FamilyMember *c;
    cout << "Input number of family members";
    cin >> x;
    for(n = 0; n < x; n++)
    {
        cout << "Enter name:";
        cout << endl;
        cin >> Name;
        cout << "Enter age:";
        cout << endl;
        cin >> Age;
        c = new FamilyMember;
        c->setName(Name);
        c->setAge(Age);
        list.push_back(*c);
    }

    vector<FamilyMember>::iterator v;
    for(v = list.begin(); v != list.end(); ++v){
        v->printFamilyMemberInfo();
    }
    double a, b;
    for(n = 0; n < x; n++)
    {
        a += list.at(n).getAge();
    }
    b = a / x;
    std::ofstream datafile("myFamily.text", std::ios_base::out |                 std::ios_base::app);
    dataFile << "Average age is: " << b << endl;
    return 0;
}

尝试在附加模式下打开stream,而不是ios::out

void FamilyMember::printFamilyMemberInfo()
{
    ofstream dataFile;
    dataFile.open("myFamily.txt", ios::app); // OPEN IN APPEND MODE
    dataFile << name << endl;
    dataFile << age << endl;
}