问题
有时候我们通过rosrun运行的.cpp文件中会打开或保存某个文件,而此时文件名如果直接写入程序里会有些不方便,每次更改文件名都需要再编译一次。。。
最近在对实验的点云数据进行处理时就遇到了这个问题,每个ros包中提取出一帧点云,如果每次改保存的文件名就每次都需要重新编译,比较麻烦,比较慢。。。
向主函数int main()输入参数
部分代码:
int main(int argc,char** argv)
{
string m_=argv[1];
m= atoi(m_.c_str());
printf("保存第%d帧\n",m);
string pcd_mame = argv[2];
cout<<"保存的pcd点云名为:"<<pcd_mame<<'\n';
}
解释:
argv[1]; //表示提取的第一个参数
argv[2]; //表示提取的第二个参数
【argv[0]是路径,一般用不着】
使用
原来运行pcd_points_gps.cpp的指令为:
source devel/setup.bash
rosrun cam_laser_calib pcd_points_gps
现在运行pcd_points_gps.cpp的指令为:
source devel/setup.bash
rosrun cam_laser_calib pcd_points_gps 5 111.pcd
【argv[1]为输入的参数5,argv[2]为输入的参数111.pcd】
结果: