#include <iostream>
#include <stack>
#include <string>
#include <sstream>
using namespace std;
stack<char> aStack;
stringstream result;
stack<char> operand1;
stack<char> operand2;
stringstream &postfixExp(string ch){
for(int i =0; i< ch.length(); i++)
{
if(ch[i]== '1' || ch[i]== '2' || ch[i]== '3' || ch[i]== '4' || ch[i]== '5' || ch[i]== '6' || ch[i]== '7' || ch[i]== '8' || ch[i]== '9' || ch[i]== '0' )
{
aStack.push(ch[i]);
}
else if( ch[i]== '+')
{
operand2.push(aStack.top());
aStack.pop();
operand1.push(aStack.top());
aStack.pop();
result << ( operand1.top() + operand1.top());
}
}
return result;
}
int main()
{
string postfix = " 2+3";
stringstream* answer = &postfixExp(postfix);
cout << "Result = " << answer->str() << endl;;
return 0;
}
こんにちは、私のコードのどこが悪いのか誰か知っていますか? コンパイラからのエラー メッセージは表示されません。ただし、実行するとクラッシュします。
関数から得た結果を表示するのに苦労しています。当初はスタック関数を使いたかったのですが、メイン関数に値を渡して表示する方法が思いつきませんでした。
次に、代わりに stringstream 関数を使用することを考えています。残念ながら、対応する結果を表示する方法がまだわかりません
私のコードのどの部分が間違っているのか、または stringstream または stack を使用する以外に関数からの結果を表示するためのより良い方法があるかどうか、誰かが教えてくれますか?
どうもありがとう!