我正在尝试使用类结构和getline()函数将文本文件数据显示为列,以读取文本文件并将数据转储到向量类中。但是似乎该程序甚至没有运行到我的“ while”循环,然后退出了程序。文本文件不为空。

下面是我的代码:

void ScrambleWordGame::displayScoreChart() {
//open file
fstream readScoreChart("ScoreChart.txt");
string line = "";

//vector to store data in
vector<personResult> perResult;
personResult person;

//while file is open, do stuff
if(readScoreChart.is_open())
{
    //check through the file
    readScoreChart.seekp(0,ios::end);
    //get the size of the file's data
    size_t size = readScoreChart.tellg();
    if(size == 0)
        cout << "No results yet. Please TRY to win a game. AT LEAST~" << endl;
    else
    {
        //create the 1st row with 4 column names
        cout << left
            << setw(20) << "Player Name "
            << setw(20) << "Winning Time "
            << setw(20) << "No. Of Attempts "
            << setw(20) << "Game Level " << endl;
        //fill the second line with dashes(create underline)
        cout << setw(70) << setfill('-') << "-" << endl;
        //read the file line by line
        //push the 1st line data into 'line'
        cout << getline(readScoreChart,line);
        while(getline(readScoreChart,line))
        {
            //create stringstream n push in the entire line in
            stringstream lineStream(line);

            //reads the stringstream and dump the data seperated by delimiter
            getline(lineStream,person.playerName,':');
            getline(lineStream,person.winningTime,':');
            getline(lineStream,person.noOfAttempts,':');
            getline(lineStream,person.gameLvl);

            //sort the results based on their timing
            //sort(perResult.begin(),perResult.end(),pRes);
            //display the results
            cout << left
                    << setfill(' ')
                    << setw(25) << person.playerName
                    << setw(22) << person.winningTime
                    << setw(17) << person.noOfAttempts
                    << setw(16) << person.gameLvl
                    << endl;
        }
    }
}
readScoreChart.close();


}

编辑:TextFile的示例
约el书:3:1:1
玛丽:5:2:2
约翰:25:3:1

最佳答案

您的文件指针在第一次搜索后位于文件的末尾。您需要将其重新定位到文件的开头。

if(size == 0)
{
    cout << "No results yet. Please TRY to win a game. AT LEAST~" << endl;
}
else
{
    readScoreChart.seekp(0,ios::begin);
    // all you other stuff
}

关于c++ - getline无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17692931/

10-15 17:56