不能得到这个更新变量C++
我正在写一个程序,这是一个计算器,你可以在其中输入总和,然后它会给你答案。那部分很好用。我遇到的问题是,取上一个和的答案,然后用它进行计算 比如:5+5=10 ans+10=20 当我运行下面的代码时,当我一遍又一遍地进行正常计算时,它工作得很好。但是,当我输入例如ans*2时,它使用之前设置为“操作”和“麻木”的值。所以,如果它是:5+5,我想用这个结果乘以eg 2,它会这样做: 10+5=15 这是我的密码:不能得到这个更新变量C++,c++,stringstream,sstream,C++,Stringstream,Sstream,我正在写一个程序,这是一个计算器,你可以在其中输入总和,然后它会给你答案。那部分很好用。我遇到的问题是,取上一个和的答案,然后用它进行计算 比如:5+5=10 ans+10=20 当我运行下面的代码时,当我一遍又一遍地进行正常计算时,它工作得很好。但是,当我输入例如ans*2时,它使用之前设置为“操作”和“麻木”的值。所以,如果它是:5+5,我想用这个结果乘以eg 2,它会这样做: 10+5=15 这是我的密码: #include <iostream> #include <cm
#include <iostream>
#include <cmath>
#include <iomanip>
#include <sstream>
#include "bell.h"
using namespace std;
int main()
{
stringstream ss;
double numA;
char operate;
double numB;
double ans=0;
string temp;
cout<<"input: ";
getline(cin, temp);
ss.str(temp);
ss>>numA>>operate>>numB;
cout<<setprecision(9);
while(temp[0] != 'q' && temp[0] != 'Q')
{
if(temp[0]=='a' && temp[1]=='n' && temp[2]=='s')
{
numA=ans;
}
switch(operate)
{
case '+':
{
ans=numA+numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '-':
{
ans=numA-numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '*':
{
ans=numA*numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '/':
{
ans=numA/numB;
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case '^':
{
ans=pow(numA, numB);
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
case 'z':
{
ans=bell(numA, numB);
cout<<numA<<" "<<operate<<" "<<numB <<" = "<< ans<<endl;
break;
}
default:
{
cout<<"Invalid input. Please try again!"<<endl;
}
}
ss.clear();
ss.str(" ");
cout<<"Input: ";
getline(cin, temp);
ss.str(temp);
ss>>numA>>operate>>numB;
}
cout<<"Goodbye"<<endl;
return 0;
}
谁能帮我把这件事做好吗。为什么operate和numB不更新?我怀疑这句话有问题:
ss>>numA>>operate>>numB;
numA和numB为双型。例如,如果输入行是ans+10,则该语句将尝试从该输入的开头提取numA作为双精度,这将失败,而不会消耗输入字符串的任何部分。因此,提取剩余的值operate和numB不会给您预期的值,因为在提取这些值时,整个输入字符串仍有待解析
一种方法是,在读取输入行之后,首先检查ans案例。然后,您可以将上面的语句设置为条件语句,对ans案例的值进行不同的解析
另一种解决方案是,首先将numA和NUB值提取到字符串变量中,然后在检查ans特殊情况后才将它们转换为双精度。您的问题是什么?