c ++从字符串中获取公式
c++ taking a formula from a string
这个程序的目标是从用户输入中获取公式(我使用 QLineEdit
)并绘制公式(对 qt 使用 QCustomPlot
)。这是我遇到问题的代码部分:
QVector<double> x(10000), y(10000);
for (int i=0; i<10000; ++i)
{
double xi = ui->xi_LineEdit->text().toDouble();
x[i] = xi;
double yi = ui->yi_LineEdit->text().toDouble();
y[i] = yi;
}
ui->grafiek->addGraph();
ui->grafiek->graph(0)->setData(x, y);
这段代码显然现在不能工作。如何从用户输入中获取公式,例如 xi = i/50.0 - 20
和 yi = x[i]*x[i]
,以及 处理 ?
QLineEdit
为您提供包含数学表达式的 QString
。此类型不能转换为 double
除非它只包含双精度数。例如,文本“10.34”可以从 QString 转换为 double,但文本“10.34 - 18 + 2”不能,因为它必须先求值。
您需要将 QLineEdit 文本传递给数学表达式解析器。如果您只需要处理简单的算术运算,您可以自己编写。这是一个值得学习的练习,您可以在网上找到大量示例,包括在 SO 上。如果您需要更复杂的解析,或者很着急,那么您可以 google for C++ math parser
或类似的并使用现有代码。
这个程序的目标是从用户输入中获取公式(我使用 QLineEdit
)并绘制公式(对 qt 使用 QCustomPlot
)。这是我遇到问题的代码部分:
QVector<double> x(10000), y(10000);
for (int i=0; i<10000; ++i)
{
double xi = ui->xi_LineEdit->text().toDouble();
x[i] = xi;
double yi = ui->yi_LineEdit->text().toDouble();
y[i] = yi;
}
ui->grafiek->addGraph();
ui->grafiek->graph(0)->setData(x, y);
这段代码显然现在不能工作。如何从用户输入中获取公式,例如 xi = i/50.0 - 20
和 yi = x[i]*x[i]
,以及 处理 ?
QLineEdit
为您提供包含数学表达式的 QString
。此类型不能转换为 double
除非它只包含双精度数。例如,文本“10.34”可以从 QString 转换为 double,但文本“10.34 - 18 + 2”不能,因为它必须先求值。
您需要将 QLineEdit 文本传递给数学表达式解析器。如果您只需要处理简单的算术运算,您可以自己编写。这是一个值得学习的练习,您可以在网上找到大量示例,包括在 SO 上。如果您需要更复杂的解析,或者很着急,那么您可以 google for C++ math parser
或类似的并使用现有代码。