**编辑:我通过将“inStream >> next”更改为“inStream >> skipws >> next”来使其工作。在我早期的功能之一(提取姓氏和名字)中,我切换了 noskipws。显然,切换在功能之间持续存在?
我有一个程序是分配的一部分,该程序应该读取一个文本文件,该文件的格式设置为:“lastname firstname 1 2 3 4 5 6 7 8 9 10”(其中 10 个数字中的每一个都是整数分数)。
我可以很好地阅读姓氏和名字,但是当我开始阅读数字时,我只能阅读第一个,然后其余的都设置为 0。
下面是应该读取分数的函数。inStream 已经取消了姓氏和名字。我正在使用的文本文件有一行:
托西斯·哈雷 85 23 10 95 43 12 59 43 20 77
当运行程序并打印出从 0 到 9 的 student.score 值时,第一个正确显示为“85”,但所有重置显示为“0”。想法?
void GetScores (ifstream& inStream, record& student)
{
int score[10] = {-1, -1, -1, -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1};
int next;
int counter = 0;
string test;
for (int i = 0; i < 10; i++)
{
inStream >> next;
student.score[i] = next;
}
}