1

希望有人能告诉我我做错了什么。我正在读取文本文件中每一行的特定点,然后尝试将该值添加到下一行的值中,并继续这样做直到文件/循环结束。但目前,它只会添加前两行的值,而不是......

123 + 456 + 789 = 总工资。

我的代码如下:

inStream.open("staffMembers.txt");

while(getline(inStream.ignore(256, '$'), line))
{
    totalPayroll = stoi(line) + stoi(line);
}

inStream.close();

cout << "$" << totalPayroll << endl;

我的文本文件格式如下:

1 | Person One | $123
2 | Person Two | $456
3 | Person Three | $789
4

2 回答 2

5

在您的循环中,您为每一行重新分配totalPayroll的值stoi(line) + stoi(line),因此最终结果为 2*789。

你需要保持一个连续的总和:

totalPayroll = totalPayroll + stoi(line);

这也有一个使用复合赋值运算符的简短形式,它做同样的事情:

totalPayroll += stoi(line);
于 2013-05-06T03:40:32.490 回答
2

正如克里斯在他的评论中提到的那样,totalPayroll += stoi(line);应该可以解决您的问题。

C++ 运算符+=是一种简写方式totalPayroll = totalPayroll + stoi(line);。它将运算符右侧给出的值与变量的当前值相加。

于 2013-05-06T03:40:59.877 回答