解析从python到c++的参数
parsing arguments from python to c++
我想知道如何从python更改c++/C程序中的参数值。在下面的程序中,我使用牛顿-拉夫森方法来计算函数的根。我想要的是将变量xn的值(用于初始猜测)更改为某个值在python接口中给定的值。这个代码很简单,但我正在尝试一个更大的代码在哪里我需要改变一些变量的值,我不想编译的代码每次我改变这些变量的值。
我可以写一个输入文件以避免再次编译代码,但我想要的是
控制代码更多,例如,在某个时间步停止程序和更改变量的值,然后继续执行。你能告诉我有什么直接的方法吗?
致意。
#include <iostream>
using namespace std;
double first_derivative(double x)
{
double dummy;
// Parabolic Function
dummy = 2.0 * x + 7.0;
return (dummy);
}
double second_derivative(double x)
{
double dummy;
//Parabolic Function
dummy = 2.0 ;
return(dummy);
}
int main ()
{
double xn,fd,sd;
int i,n;
i=0;
xn=4.0 ;
cout << i << " " << xn << "n" ;
for(i=0; i<10 ; i++) {
fd = first_derivative(xn);
sd = second_derivative(xn);
xn = xn - fd/sd ;
cout << i << " " << fd << " " << sd << " " << xn << "n" ;
}
return 0;
}
如果你想让它像Python一样工作,那么最好直接用Python写。
你不能仅仅改变编译程序的"数字"。但是,您可以做的是让程序接受参数,然后在运行时更改这些参数。您可以在c++中使用命令行参数、配置文件或请求输入来完成此操作。所有这些都比使用Python更容易。
如果由于某些原因,部分代码必须使用c++,而您确实需要Python,那么您可以将c++例程作为库公开给Python。一种流行的方法是SWIG。然后你可以做的是创建你可以从Python调用的函数,这些函数可以接受你可变的参数。您的Python脚本将简单地调用它们。
一种方法是使用Boost Python:
提振。Python,一个支持无缝互操作性的c++库在c++和Python编程语言之间。
听起来很符合你的要求。
或者,当你的c++程序不接受任何参数时。您可以更改您的main
函数以接受参数。
int main(int argc, char *argv[])
argc包含参数的数量,argv是指向参数字符串的指针。您可以自己解析它,或者使用类似Boost.program_options的东西。
这个程序可以通过python子进程从python中调用。
我想这是为了测试?因为这是"在某个时间步停止程序并更改变量值并继续执行"的唯一相同原因。
如果是这样,这可能接近你要找的:http://sourceware.org/gdb/wiki/PythonGdb。当然,这只适用于使用gdb的情况。
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用