带有各种变量的c++文件输入

C++ File input with various variables

本文关键字:c++ 文件 输入 变量      更新时间:2023-10-16

我正在尝试创建一个程序的加载函数。所以写这个来保存我的信息。我真的没有偏好是否将每个竞争者的所有内容放在同一行,但这看起来最简单。

void GameHandler::WriteToFile()
{
    ofstream file ("Competitors.txt");
    if(file.is_open())
    {
        file<<this->mNrOfCompetitors<<"n";
        for(int i=0; i<this->mNrOfCompetitors; i++)
        {
            file<<this->mCompetitors[i].GetName()<<"n";
            file<<this->mCompetitors[i].GetDateOfBirth()<<"n";
            file<<this->mCompetitors[i].GetGender()<<"n";
        }
        file.close();
    }
    else
    {
        cout<<"Unable to write to file."<<endl;
    }
}

但是现在当我必须加载所有内容时。人们有最奇怪的教程,基本上处理最简单的情况。这就是为什么我需要一些帮助。

我开始了,但这不起作用,因为我不知道如何在输入中进行线路切换。

void GameHandler::LoadFromFile()
{
    cleanup(); //Erase current data and replace with loaded data.
    string linestring;
    int lineint;
    bool linebool;

    ifstream file ("Competitors.txt");
    if(file.is_open())
    {
        file>>this->mNrOfCompetitors;
        this->mCapacity = this->mNrOfCompetitors+5;
        this->mCompetitors = new Duathlet[this->mCapacity];

        for(int i=0; i<this->mNrOfCompetitors; i++)
        {
            file>>linestring;
            this->mCompetitors[i].SetName(linestring);
            //need lineswitch
            file>>lineint;
            this->mCompetitors[i].SetDateOfBirth(lineint);
            //need lineswitch
            file>>linebool;
            this->mCompetitors[i].SetGender(linebool);
            //need lineswitch
        }

        file.close();
    }
    else
    {
        cout<<"Unable to open file."<<endl;
    }
}

你觉得getline怎么样?如果你对尾行有问题,你也可以得到这个尾行字符('n'),例如
char x; file.get(x) ->现在'n'将被取走。
另一个解决方案是忽略例如file.ignore(666, 'n')