基本计算器,使用反向波兰表示法

basic calculator, using Reverse Polish Notation

我正在尝试制作一个基本的计算器,使用从 string 获取输入并输出 double 的反向波兰表示法。输入是:82+5*8-4/ 在标准表示法中应读作 (((8 + 2) * 5) - 8) / 4

想要的输出是 10.5,但我的输出是 106.962。

你能解释一下我做错了什么吗?

据我所知,我在 double switch 的字符串中做错了,但我是 C++ 的新手,我不知道问题到底是什么。

这是我尝试过的:

#include <iostream>

int main() {

    std::string input = "82+5*8-4/";
    double output, num;
    num = input.at(0);

    for (int i = 1; i < input.size() - 1; i = i + 2) {
        switch (input.at(i + 1)) {
            case '+':
                output = num + input.at(i);
                break;
            case '-':
                output = num - input.at(i);
                break;
            case '*':
                output = num * input.at(i);
                break;
            case '/':
                output = num / input.at(i);
                break;
            default:
                break;
        }
        num = output;
    }
    std::cout << output << std::endl;    
    return (0);
}

使用评论,我现在开始工作了:

#include <iostream>

int main() {

    std::string input = "82+5*8-4/";
    double output, num1;
    num1 = input[0] - '0';
    

    for (int i = 1; i < input.size() - 1; i = i + 2) {
        double num2 = input[i] - '0';

        switch (input.at(i + 1)) {
            case '+':
                output = num1 + num2;
                break;
            case '-':
                output = num1 - num2;
                break;
            case '*':
                output = num1 * num2;
                break;
            case '/':
                output = num1 / num2;
                break;
            default:
                break;
        }
        num1 = output;
    }
    std::cout << output << std::endl;    
    return (0);
}