我正在尝试制作一个基本计算器,用户可以输入2个数字和一个运算符,计算就可以了。我无法弄清楚为什么我得到这个错误,我不完全确定这个错误意味着什么,因为我是c ++的新手,只有一些java的经验。
这就是我所拥有的:
Calculation.h
#include <iostream>
using namespace std;
class Calculation{
private:
int x;
int y;
public:
Calculation();
int calculateAddition(int, int);
int calculateSubtraction(int, int);
int calculateMultiplication(int, int);
int calculateDivision(int, int);
};
Calculation.cpp
#include "Calculation.h"
Calculation::Calculation(){
x = 0;
y = 0;
}
int Calculation::calculateAddition(int x, int y){
return x + y;
}
int Calculation::calculateSubtraction(int x, int y){
return x - y;
}
int Calculation::calculateMultiplication(int x, int y){
return x * y;
}
int Calculation::calculateDivision(int x, int y){
return x / y;
}
Main.cpp的
#include <iostream>
#include <sstream>
#include <string>
#include "Calculation.h"
using namespace std;
int main(){
Calculation calc;
int i = 0;
char k;
int x;
int y;
char j = 'a';
string inputCalc;
stringstream str;
while(j != 'q'){
cout << "1. Make Calculation" << endl;
cout << "2. Quit" << endl;
cin >> i;
if(i == 1){
cout << "Input calculation:" << endl;
cin >> inputCalc;
k = inputCalc.at(2);
str << inputCalc.at(1);
str >> x;
str << inputCalc.at(3);
str >> y;
if (k == '+'){
calc.calculateAddition(x, y);
}
else if (k == '-'){
calc.calculateSubtraction(x, y);
}
else if (k == '*'){
calc.calculateMultiplication(x, y);
}
else if (k == '/'){
calc.calculateDivision(x, y);
}
else{
}
}
else if(i == 2){
j = 'q';
}
else{
cout << "Invalid input. Please enter 1 or 2." << endl;
}
}
}
编辑:啊,谢谢你,我忘记了一切从0开始。傻我。
答案 0 :(得分:1)
假设cin >> inputCalc
中的输入为“1 + 2”。 input.at(0)=='1'
,input.at(1)=='+'
和input.at(2)==2
。 input.at(3)超出范围。
答案 1 :(得分:1)
我认为这个错误发生在一些语句中
str << inputCalc.at(3);
你确定inputCalc至少有四个字符,这个语句才有效吗?考虑到有效的indecies范围是[0,length() - 1]
std :: out_of_range是std :: string成员函数在()抛出的标准异常。