式のユーザー入力 (例: 2 * (6-1) + 2 ) を取得し、結果を出力する必要がある C++ 割り当てを行っています。ユーザー入力でスペースが検出されない限り、すべてが正しく機能します。
ユーザー入力を次のメソッドに渡す必要があります。
double Calculate(char* expr);
この問題を克服する方法はわかりませんが、スペース文字が終端のヌル バイトとして機能する c_str() が原因で問題が発生していることは認識しています。
理想的には、スペース文字を保持したいのですが、スペースは式では何の役にも立たないため、単純に削除することにしました。c_str の代わりに string::data を使用すると、同じ結果が得られます。
int main(int argc, char **argv)
{
string inputExpr;
Calc myCalc;
while(true) {
cin >> inputExpr;
if(inputExpr == "q") break;
cout << "You wrote:" << (char*)inputExpr.c_str() << endl; // debug
printf("Result: %.3f \n\n", myCalc.Calculate( (char*)temp.c_str() ) );
}
return 0;
}