【发布时间】:2021-08-23 04:02:25
【问题描述】:
我的程序应该读取命令并用一个数字执行它们。它应该是 +, -, /, * 数字,但它只读取第一个笔画。
ifstream fin("file.txt");
string line;
while(getline(fin,line))
{
if(line[0] == '+')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double p = 0.0;
ss >> p;
res += p;
}
n = "";
if(line[0] == '-')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double m = 0.0;
ss >> m;
res -= m;
}
n = "";
if(line[0] == '*')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double di = 0.0;
ss >> di;
res *= di;
}
n = "";
if(line[0] == '/')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double mu = 0.0;
ss >> mu;
res /= mu;
}
n = "";
}
文件示例:
+1
-2
*5
输出:
1
预期输出为 -5,但它输出 1。 为什么会发生,我该怎么办? ss是stringstream,n是string,res是double,strokes[]是string。
【问题讨论】:
-
您的minimal reproducible example 不可重现。
ss是什么?n?res?识别操作后为什么要循环? -
已编辑问题
-
包含相关代码。 阅读我发布的链接。
-
我可以再做一些假设,足以说明您的解决方案过于复杂,但不足以提供实际答案。这就是为什么学会正确提问如此重要的原因。它避免了这种毫无价值的来回,直接解决了问题。我还建议再次阅读How to Ask。我会说这是第一次尝试,非常好。
-
p = n;将是一种更简单的方法。甚至更简单:res += n;,没有中间变量,也没有强制转换。