gpt4 book ai didi

c++ std::out_of_range 在内存位置

转载 作者:行者123 更新时间:2023-11-30 04:09:08 26 4
gpt4 key购买 nike

我正在尝试制作一个基本的计算器,用户可以在其中输入 2 个数字和一个运算符,然后计算就可以进行了。我不明白为什么我会收到这个错误,我也不完全确定这个错误是什么意思,因为我是 c++ 的新手,只有一些 java 的经验。

这是我的:

计算.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);
};

计算.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 开始的。傻我。

最佳答案

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

关于c++ std::out_of_range 在内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com