C ++从输入文件中添加数字

时间:2015-03-12 21:46:14

标签: c++

我正在尝试打开带有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;
}

}

它给了我正确的计数,但不是每次都正确地将数字加在一起。

2 个答案:

答案 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;
}