c++ - 我在从 .txt 文件中添加数字时遇到了一些问题

标签 c++ fstream

我在学校布置了作业,我已经完成了,但结果并不是我想要的。

任务是根据以下规则从文本文件中获取总和:

  • 第一列包含数字

  • 第二个是 0/1 bool 值(分隔符是空格)

  • 只要 bool 在连续行中为真,程序就应该将数字相加

.txt 文件如下所示:

输入:

20 1

30 1

40 0

50 1

60 1

期望的输出:

50

110

代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
string line;
double number;
double sum;
int boolean;
sum = 0;

ifstream homework;
homework.open("homework.txt");
    while (!homework.eof())
    {
        homework >> number >> boolean;

        if (boolean == 1)
        {
            sum += number;          
        }
    }

cout << sum << endl;

homework.close();

system("pause");
return 0;
}

我希望代码打印出 50 和 110(因为有一行带有假 bool 值)但是代码打印出了 160(因此它总结了所有带有真 bool 值的行)。

有什么想法吗?

最佳答案

问题是在文件完全迭代之前您不会输出,因此您看到的是总和,而不是每个 false bool 值之后的总和。如果每次遇到 bool 值 false 时都需要小计,则需要在循环中添加一些内容:

while (homework >> number >> boolean)
{
    if (boolean)
    {
        sum += number;          
    }
    else
    {
        cout << sum << endl;
        sum = 0;
    }
}

顺便说一句。您的 bool 变量 boolean 是如何声明的,您的代码是否可以编译?我更改了示例中的支票(删除了 == 1)。

关于c++ - 我在从 .txt 文件中添加数字时遇到了一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547852/

相关文章:

c++ - Windows 下的异常处理和堆栈跟踪(MinGW/gcc)

c++ - 读取二进制数据时遇到问题

c++ - 将 2 个结构数组的信息输出到一个文件中

C++文件I/O问题

c++ - 将我的 Visual Studio C++ 项目从 64 位系统移动到 32 位系统

c++ - 更高效的 STL,如执行操作的方式,

c++ - Win7命名空间扩展确定IShellItem是文件还是文件夹

c++ - RGB LED和伺服电机存在问题

c++ - 如何逐行读取文件或一次读取整个文本文件?

c++ - 从文件中读取行并存储在单独的字符串变量中