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

时间:2014-06-21 10:47:20

标签: c++ file-io

我正在尝试为程序创建一个加载函数。所以写了这个来保存我的信息。我真的不喜欢是否将每个竞争对手的所有内容保留在同一行,但这看起来最简单。

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;
    }
}

1 个答案:

答案 0 :(得分:0)

您对getline有何看法?如果您对结束问题有疑问,您也可以get此结束行字符(&#39; \ n&#39;),例如, char x; file.get(x) - &gt;现在&#39; \ n&#39;将被采取 其他解决方案是ignore,例如file.ignore(666, '\n')