我正在尝试使用类结构和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/