如何将字符串转换为数学方程式

时间:2016-02-12 01:24:33

标签: c++ c++11

我用c ++编写了一个方程式函数。我的问题是否相当直接。我正在阅读文件" 4 + 5"。所以我将它存储在一个字符串中。

我的问题:

我如何输出9?因为如果我只是cout<< myString ...输出只是" 4 + 5"

3 个答案:

答案 0 :(得分:0)

你可能需要做比你想象的更多的工作。您需要将每个操作数和运算符分别读入字符串变量。接下来,一旦您确认它们确实是整数,就将数字字符串转换为整数。你可能有一个带有操作数的字符,你可以做一些类似switch的情况来确定实际的操作数是什么。从那里开始,你需要在开关盒中确定存储在变量中的值并输出最终值。

答案 1 :(得分:0)

http://ideone.com/A0RMdu

#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个数字,您可以将中缀表达式转换为表达式并使用堆栈进行评估。