我知道stoi()函数可能只适合整数值,但是我需要将以下字符串转换为实际的算术运算。例如:
"3 + 7 * 4 - 2"
到3 + 7 * 4 - 2
如果必须将其分配给变量,结果将为29。
答案 0 :(得分:2)
简而言之:不。
如何处理此问题实际上取决于一开始如何创建字符串。
这个用户是否在stdin上提供了一些简单的输入,而您使用std::cin
进行了捕获?
如果它确实是一个简单的表达式(没有括号等),则可以从stdin中读取一个int,一个char,一个int,一个char,一个int等...,然后将char解析为运算符。
当我遇到类似的问题时,我遇到了Shunting-Yard Algorithm,这似乎正是我想要的。
您还可以实现一些语法。它工作时确实很有意义,但这是很多工作和过度杀伤力。参见parsing math expression in c++。与代码示例相比,您将获得比在这里更好的注释。