Я выполняю назначение C++, которое требует ввода пользователем выражения (например: 2 * (6-1) + 2) и вывода результата. Все работает правильно, если в пользовательском входе не встречается пробел.C++ c_str() не возвращает полную строку
Необходимо передать пользовательский ввод следующему методу;
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;
}
Проблема не в том, что вы думаете. Пространство не совпадает с завершающим нулем. –