つけじょにーのすぱげていコード

主に、競技プログラミング、セキュリティのお勉強の際に書いたすぱげていコードを書き込みます

AOJ 0087: Strange Mathematical Expression

stoi,stodなんてあったんだ・・・便利だなぁ
と思ったのも束の間
submitしたらCompile Error Runtime Errorの嵐
どうも、g++でコンパイルできないのが原因な様

//0087
//題意:逆ポーランド記法を読み込み、計算結果を出力せよ
//入力:文字列が1行に与えられる
//制約:文字列は80文字以内
//出力:計算結果(0.00001以下の誤差を含んでも良い実数)
//解決策:
//タイム:

#include <bits/stdc++.h>
#include <string>
using namespace std;
vector<string> data;

vector<string> split(string& str, char delim) {
    stringstream ss(str);
    vector<string> res;
    string tmp;
    while(getline(ss, tmp, delim)) res.push_back(tmp);
    return(res);
}

double calc(double a, double b, char opr) {
    switch(opr) {
        case '+':return(a+b);
        case '-':return(a-b);
        case '*':return(a*b);
        case '/':return(a/b);
    }
    return(-1);
}

double solve() {
    stack<double> stk;
    for(int r = 0; r < data.size(); r++) {
        if(data[r][0] >= '0' && data[r][0] <= '9') { //整数値ならば
            stk.push(stod(data[r]));
        } else {
            double a = stk.top(); stk.pop();
            double b = stk.top(); stk.pop();
            stk.push(calc(b, a, data[r][0]));
        }
    }
    return(stk.top());
}

int main(void) {
    string operation;
    while(getline(cin, operation)) {
        data = split(operation, ' ');
        printf("%.6f\n", solve());
    }
    return(0);
}

整数変換はatoiでやるのがいいのかな?
そういう意見もあるみたいです