【问题标题】:Converting calculation contained in string to integer - C++ [duplicate]将字符串中包含的计算转换为整数 - C++ [重复]
【发布时间】:2021-12-26 21:36:30
【问题描述】:

我想知道是否可以将包含在字符串中的计算存储为整数。例如:

#include <iostream>
#include <string>
using namespace std;
int main()
{
string variable = "-123+432";
cout << stoi(variable) << endl;
}

这返回-123,有没有可能让它返回309? 另外,如果字符串内部有更多计算(例如“-123+432*2”),而编写程序的人不知道字符串中有多少计算(例如,字符串将由用户输入)怎么办?当程序运行时)。
谢谢大家的回答

【问题讨论】:

  • 您将阅读反向波兰符号和调车场算法。这将帮助您构建一个可以标记表达式并允许您对其进行评估的解析器。
  • C++ 标准库不包括以字符串表示的数学表达式的运行时求值。您需要找到可以执行此操作的库或编写自己的库。

标签: c++ string


【解决方案1】:

这是肯定的,但是解析任意字符串,确定它们是否包含有效的数学表达式然后计算结果是相当复杂的。

除非您想自己实现解决方案以获得乐趣,否则我建议您查找并使用评估字符串表达式的 3rd 方库,例如 https://github.com/cparse/cparse

这将允许您执行以下操作(可能不完全正确,仅作为粗略示例):

int main()
{
string variable = "-123+432";
std::cout << calculator::calculate(variable, &vars) << std::endl;
}

如果您想自己做这件事以获得乐趣,我建议您查找“表达式评估”并从那里开始。这是一个相当大而复杂的话题,但是编写自己的评估器很有趣。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2012-11-20
    • 2015-03-14
    • 2011-08-22
    • 2021-12-03
    • 2018-09-24
    • 2016-01-26
    相关资源
    最近更新 更多