如何用命令行方式调用C++函数

时间:2022-08-31 14:37:38
各位好,又像大家请教啦。

需求是这样的:
现在已经写好了这样一个函数:
int CZTER_adapter::retrievePerfData_BSC(const CString &sEquip,const CString &rcver, 
                                       const CString &beginTime,const CString &endTime){……}

想请教大家,我在命令行中输入四个参数(分别对应这个函数中的四个参数)来调用这个函数,请问下大家该怎么做啊?

11 个解决方案

#1


编写代码将字符串和函数对应起来
运行时读入字符串,解析字符串,选择对应函数

#2


你这个又不是main函数,命令行怎么直接调用?

#3


该回复于2012-07-16 10:31:51被版主删除

#4


同意2楼,没有main函数怎么执行呢?除非有些第三方软件自动封装了main函数

#5


通常情况下是不可行的。除非你实现了一个程序,能让你这么干(如果不需要考虑特别全面的话,也不算太难实现)。

#6


大概lz以为C++是脚本型语言

#7


把需要的参数传递给Main函数,然后在Main函数里将字符串转换为CString再传递给retrievePerfData_BSC函数

#8


嗯,7楼的很对。

int main(int argc, char* argv[]){
   if(argc>2){
        char *bsc = "BSC";
if(strcmp(bsc,argv[0]))
{
   CZTER_adapter::retrievePerfData_BSC(CString.format("%s",argv[1]),CString.format("%s",argv[2]),CString.format("%s",argv[3])); 
}else{
    cout<<"暂时不支持手动补采"<<endl;
}
  }
}

我这样写,然后在命令行中输入四个参数,能直接调用这个函数吗?

#9


我用VS2005做过类似的,默认会传递一个参数(程序名称)进去,所以你自己的参数是从argv[1]开始的。
你没有加参数检验~传递的参数数目可能会不足。

#10


嗯,是的,忘了第一个参数应该是程序进程名,参数数目不足的问题现在不管,现在只看下这样写能否顺利执行,我测试的时候是报错的

#11



int _tmain(int argc, _TCHAR* argv[])

这种main函数argv是宽字符

#1


编写代码将字符串和函数对应起来
运行时读入字符串,解析字符串,选择对应函数

#2


你这个又不是main函数,命令行怎么直接调用?

#3


该回复于2012-07-16 10:31:51被版主删除

#4


同意2楼,没有main函数怎么执行呢?除非有些第三方软件自动封装了main函数

#5


通常情况下是不可行的。除非你实现了一个程序,能让你这么干(如果不需要考虑特别全面的话,也不算太难实现)。

#6


大概lz以为C++是脚本型语言

#7


把需要的参数传递给Main函数,然后在Main函数里将字符串转换为CString再传递给retrievePerfData_BSC函数

#8


嗯,7楼的很对。

int main(int argc, char* argv[]){
   if(argc>2){
        char *bsc = "BSC";
if(strcmp(bsc,argv[0]))
{
   CZTER_adapter::retrievePerfData_BSC(CString.format("%s",argv[1]),CString.format("%s",argv[2]),CString.format("%s",argv[3])); 
}else{
    cout<<"暂时不支持手动补采"<<endl;
}
  }
}

我这样写,然后在命令行中输入四个参数,能直接调用这个函数吗?

#9


我用VS2005做过类似的,默认会传递一个参数(程序名称)进去,所以你自己的参数是从argv[1]开始的。
你没有加参数检验~传递的参数数目可能会不足。

#10


嗯,是的,忘了第一个参数应该是程序进程名,参数数目不足的问题现在不管,现在只看下这样写能否顺利执行,我测试的时候是报错的

#11



int _tmain(int argc, _TCHAR* argv[])

这种main函数argv是宽字符