我想从与优先申请阅读后以解决这种类型的表达式
2 + 3/5 * 9 + 3-4
这里是我试图解决该任务的代码我怎样才能解决这个问题C++优先经由申请
while (!inputFile.eof()) {
getline(inputFile, read);
cout << read << endl;
for (int i = 0; i < read.length(); i++) {
if (read[i] == '/') {
result = static_cast<float>(read[i - 1])/static_cast<float>(read[i + 1]);
read[i - 1] = result;
for (int j = i; j < read.length() - 2; j++) {
read[j] = read[j + 2];
}
read[read.length() - 1] = '\0';
read[read.length() - 2] = '\0';
}
}
cout << result << endl;
cout << read << endl;
}
你正在评估的操作数为花车但你保存它放回串作为一个字符,失去了任何精度。您正在基于它们的ascii表示来评估操作数,而不是实际值。该代码假定每个操作数只有一个字符长。你只显示分区,但是在执行乘法时,你可能会得到大于9的值,因此会有问题。我认为你应该重新思考你的解决方案,我建议不要试图在一个字符串中完成所有工作。 – vu1p3n0x
我不确定自己明白你想要做什么。评估表达式不是一项简单的任务。 [This](http://www.stroustrup.com/3rd_code.html)可能会帮助你(寻找桌面计算器)。如果'“/”'是字符串的第一个字符,而如果给定的格式良好的输入不会发生 – ZDF