我正在做一个 C++ 赋值,需要用户输入一个表达式(例如: 2 * (6-1) + 2 )并输出结果。除非在用户输入中遇到空格,否则一切正常。
要求将用户输入传递给以下方法;
double Calculate(char* expr);
我知道这个问题是由 c_str() 引起的,其中空格字符充当终止空字节,但我不确定如何克服这个问题。
理想情况下,我想保留空格字符,但我会满足于简单地删除它们,因为空格在表达式中没有任何作用。使用 string::data 而不是 c_str 时,我得到了相同的结果。
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;
}