希望有人可以告诉我我做错了什么。我正在读取文本文件中每一行的特定点,然后尝试将该值添加到下一行的值,并继续这样做,直到文件/循环结束。但目前,它只会添加前两行的值,而不是......
123 + 456 + 789 = totalPayroll。
我的代码如下:
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
答案 0 :(得分:5)
在你的循环中,你为每一行重新分配totalPayroll
stoi(line) + stoi(line)
的值,所以它最终最终为2 * 789。
你需要保持连续的总和:
totalPayroll = totalPayroll + stoi(line);
这也有一个使用复合赋值运算符的简短形式,它执行相同的操作:
totalPayroll += stoi(line);
答案 1 :(得分:2)
正如克里斯在评论中提到的那样,totalPayroll += stoi(line);
应该可以解决你的问题。
C ++运算符+=
是编写totalPayroll = totalPayroll + stoi(line);
的简写方式。它将操作符右侧给出的值添加到变量的当前值。