gpt4 book ai didi

C++ c_str() 不返回完整的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:00 26 4
gpt4 key购买 nike

我正在做一个 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;
}

最佳答案

c_str 工作得很好。您的问题是 cin >> inputExpr>>> 运算符只读取到下一个空格,因此您不会完全读取方程式。

你要用的是std::getline :

std::getline (std::cin,inputExpression);

它将一直读到换行符。如果您需要特定的分隔符,请参阅函数说明。

关于C++ c_str() 不返回完整的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com