我正在尝试打开带有int数字列表的文件。我只想输出文件中的总数,并将文件中的所有数字加在一起。
这是我遇到问题的部分:
void workFunc(ifstream& myInput, string fileName, int& count, int& sum)
{
//int count = 0;
//int sum = 0;
int num;
myInput >> num;
while (myInput.good())
{
myInput >> num;
count++;
sum += num;
}
}
它给了我正确的计数,但不是每次都正确地将数字加在一起。
答案 0 :(得分:3)
你不会算上你读的第一件事,但你算上最后一件事两次。因此,你偶然得到了计数,但当然总和是错误的,除非第一个和最后一个值恰好相同。
您在num
中阅读了一些内容,然后进入循环。循环所做的第一件事就是再次读入num
,丢弃之前的值。所以第一个值不计算在内。然后递增count
并将其添加到sum
,无论读取是否成功,都会将最后一个值计算两次。
你想要这个:
myInput >> num;
while (myInput.good())
{
// First count the value that we just read
count++;
sum += num;
// Then read the next value
myInput >> num;
}
答案 1 :(得分:2)
您可以将其简化为:
int num;
while (myInput >> num)
{
count++;
sum += num;
}