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

How to commute a string into a mathematical equation

本文关键字:方程式 转换 字符串      更新时间:2023-10-16

我正在用 c++ 编写一个方程函数。我的问题如果相当直截了当。我正在阅读文件"4 + 5"。所以我把它存储到一个字符串中。

我的问题:

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

您可能需要做比预期更多的工作。 您需要分别读取每个操作数和运算符到字符串变量中。 接下来,一旦确认数字字符串确实是整数,就将其转换为整数。 你可能会有一个包含操作数的字符,你会做一些类似开关大小写的事情来确定实际的操作数是什么。 从那里,您需要对存储在变量中的值执行在开关情况下确定的操作,并输出最终值。

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;
}

您的输出是"4+5",因为"4+5"就像任何其他字符串一样,例如:"abc",而不是 4 和 5 是整数,+ 是运算符。如果它涉及的不仅仅是添加 2 个数字,您可以将中缀表达式转换为后缀表达并使用堆栈进行评估。