我有一个包含Strings和Ints的文本文件,如下所示:
test1 1
test2 2
test3 3
test4 4
test5 5
test6 6
测试1-4在运行程序之前全部写入文本文件,而测试5和6通过writeHighScore()函数附加到文件中。在文本文件中,测试5和6看起来很完美,但是当我用readHighScore()将它们读回控制台时,在测试4和测试5之间有大量的换行符(大约10个)。有趣的是,测试5和测试6显示正确的间距:
test1 1
test2 2
test3 3
test4 4
test5 5
test6 6
以下是两个功能:
void writeHighScore(Player p)
{
ofstream outputFile;
outputFile.open("highscores.txt", ios::out | ios::app | ios::binary);
if (outputFile.is_open())
{
outputFile << "\r" << endl << p.getName() << " " << p.getHealth() * 10;
}
else
{
cout << "\nError file not found!";
}
outputFile.close();
}
void readHighScores()
{
string name;
int score;
ifstream inputFile;
inputFile.open("highscores.txt");
cout << "\n\n\nHIGH SCORES" << endl;
cout << "-----------" << endl;
while(!inputFile.eof())
{
getline(inputFile, name, ' ');
inputFile >> score;
cout << name << "\t\t" << setw(3) << score << endl;
}
inputFile.close();
}
谢谢!
答案 0 :(得分:0)
test4 4
之后很可能是空格和/或制表符,在打印时<< endl;
交错<< endl;
时每行占一行。删除<< "\r" << endl
,您会看到输出中间有空格。
他们正在爬行,因为你在{{1}}中使用了换行符和回车符。
答案 1 :(得分:0)
endl
和\r
在您的文件中添加了额外的换行符。尝试从outputFile
声明中删除这些内容。