C++ c++;std::内存位置超出范围

C++ c++;std::内存位置超出范围,c++,C++,我正在尝试制作一个基本的计算器,用户可以输入两个数字和一个运算符,这样计算就可以了。我不知道为什么我会得到这个错误,我不完全确定这个错误意味着什么,因为我是新的C++只有一些java的经验。p> 以下是我所拥有的: 计算h #include <iostream> using namespace std; class Calculation{ private: int x; int y; public: Calculation(); int calc

我正在尝试制作一个基本的计算器,用户可以输入两个数字和一个运算符,这样计算就可以了。我不知道为什么我会得到这个错误,我不完全确定这个错误意味着什么,因为我是新的C++只有一些java的经验。p> 以下是我所拥有的:

计算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);
};
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;
    }
}
}
#包括
#包括
#包括
#包括“Calculation.h”
使用名称空间std;
int main(){
计算计算;
int i=0;
chark;
int x;
int-y;
char j='a';
字符串输入;
stringstream str;
而(j!=“q”){
库蒂;
如果(k=='+'){
计算条件(x,y);
}
else如果(k='-'){
计算牵引力(x,y);
}
else如果(k=='*'){
计算乘法(x,y);
}
else如果(k=='/')){
计算视力(x,y);
}
否则{
}
}
else如果(i==2){
j=‘q’;
}
否则{

不能假设
cin>>inputCalc
中的输入为'1+2'。
input.at(0)='1'
input.at(1)=='+'
input.at(2)==2
。input.at(3)超出范围。

我认为一些语句中出现了这样的错误

str << inputCalc.at(3);
str
str << inputCalc.at(3);