我用c ++编写了一个方程式函数。我的问题是否相当直接。我正在阅读文件" 4 + 5"。所以我将它存储在一个字符串中。
我的问题:
我如何输出9?因为如果我只是cout<< myString ...输出只是" 4 + 5"
答案 0 :(得分:0)
你可能需要做比你想象的更多的工作。您需要将每个操作数和运算符分别读入字符串变量。接下来,一旦您确认它们确实是整数,就将数字字符串转换为整数。你可能有一个带有操作数的字符,你可以做一些类似switch的情况来确定实际的操作数是什么。从那里开始,你需要在开关盒中确定存储在变量中的值并输出最终值。
答案 1 :(得分:0)
#include <iostream>
#include <sstream>
#include <string>
int main(int argc, char* argv[])
{
std::string s = "4 + 5";
std::istringstream iss;
iss.str(s); // fill iss with our string
int a, b;
iss >> a; // get the first number
iss.ignore(10,'+'); // ignore up to 10 chars OR till we get a +
iss >> b; // get next number
// Instead of the quick fix I did with the ignore
// you could >> char, and compare them till you get a +, - , *, etc.
// then you would stop and get the next number.
// if (!(iss >> b)) // you should always check if an error ocurred.
// error... string couldn't be converted to int...
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << a + b << std::endl;
return 0;
}
答案 2 :(得分:0)
您的输出是&#34; 4 + 5&#34;因为&#34; 4 + 5&#34;就像ex:&#34; abc&#34;中的任何其他字符串一样,而不是4和5是整数而+是运算符。 如果它涉及的不仅仅是添加2个数字,您可以将中缀表达式转换为表达式并使用堆栈进行评估。