【发布时间】:2019-02-09 00:06:49
【问题描述】:
我正在做一个任务,我创建了一个名为 formula.txt 的文件,其中包含以下内容:
100 + 50 - 25 + 0 + 123 - 1
现在我必须使用输入重定向,以便文件读取整数并为我提供上述整数的总和。
我尝试包含字符串以及将整数类型更改为 char 以处理 + 和 - 符号。我知道 cin 接受输入并跳过空格,但我的总和不是所需的总和。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int sum = 0; //sets sum to 0
char input=0;// sets input to 0
while(cin>>input) // reads inputs
{
sum+=input; // adds inputs
}
cout << sum << endl; // adds input
}
我应该得到答案 247 相反,我得到了 835
【问题讨论】:
-
“输入重定向”具体是什么意思?你的意思是使用操作系统的“管道”功能还是别的什么?
-
看起来像你 1) 读取字符而不是数字 2) 总是在看起来涉及减法时添加。您需要自己编写一个解析器来将操作数与运算符分开,并对操作数执行适当的操作。
-
您的代码将所有输入视为相同。很明显,一个工作程序必须以不同的方式对待
+和-和数字。你必须做额外的工作,这就是练习的重点。 C++ 不会为你做这件事。对于初学者来说,这似乎是一项非常困难的任务。 -
@Dai 将数字写入单独的文件而不是程序中。这些数字充当我的输入,而不是在程序运行时直接输入数字
-
@john 我同意,我该怎么做,我还没学会解析