C++ 如何从c++;
我想写一个程序,它接受像C++ 如何从c++;,c++,string,C++,String,我想写一个程序,它接受像x^2+1这样的字符串并理解它 我想让用户输入她/他的功能,我想能够处理和理解它。有什么想法吗 char s[100]; s <- "x*I+2" x=5; I=2; res=calc(s); 将动态创建tmp.cpp 提前谢谢。幸运的是 查找{,include/}lib/MathExpression/Term。它处理复杂的数字,但您可以轻松地将其调整为普通的旧浮点数 许可证为GPL2 简而言之,当你有一个表达式 X*(X+2) 您的最高级别解析器可以解析
x^2+1
这样的字符串并理解它
我想让用户输入她/他的功能,我想能够处理和理解它。有什么想法吗
char s[100];
s <- "x*I+2"
x=5;
I=2;
res=calc(s);
将动态创建tmp.cpp
提前谢谢。幸运的是
查找{,include/}lib/MathExpression/Term。它处理复杂的数字,但您可以轻松地将其调整为普通的旧浮点数
许可证为GPL2
简而言之,当你有一个表达式
X*(X+2)
您的最高级别解析器可以解析形式为A+B+C的表达式。。。在本例中,A是整个表达式
您可以递归解析优先级更高的运算符A*B*C。。。在这种情况下,A是X,B是(X+2)
继续递归,直到解析基本标记(如X)或命中一个左括号,在这种情况下,推送某种堆栈来跟踪您的位置,并使用顶级低优先级解析器递归到括号中
我建议您使用RAII并在出现解析错误时抛出异常。使用
示例:它是德语的,但它是一个小而强大的解决方案
看
这正是你要寻找的。将函数read_varname更改为检测像“x”或“I”这样的变量。我成功使用
从www上看,它似乎也支持std::complex,但我从未使用过它,我不知道你期待什么。这太复杂了,无法给出代码作为答案,但总体思路并不十分复杂。即使对于一个普通的业余程序员来说,代码也不是遥不可及的 您需要定义语法、标记字符串、识别运算符、常量和变量。
可能把表达式放在树上。编一个替换变量的方法。。。你可以评估 您需要某种解析器。使数学运算可解析的最简单方法是将它们写入。但是,你可以使用解析器库编写自己的解析器,比如从Boost或编译动态C++文件是一个很好的解决方案…还有一个问题。@spraff-你能解释一下你的意思吗?如果你正在为一个插件系统编写一个IDE,并且想在运行中编译和测试模块,那么是的,就这样做。否则就是用大锤敲坚果。谢谢。我知道,但是我希望如果有一种方法让用户使用C++语法的完整语法:想想这个用户想要拥有的东西:<代码> SqRT(Sin(x))+TAN(t);代码>或一些更复杂的事情。什么是RAII?我的MathExpression::Term类正是这样做的。RAII是资源获取是初始化,它基本上意味着所有资源所有权都由构造函数和析构函数控制,这对于异常安全是必要的(出于其他原因也是一个好主意)。
X*(X+2)