需求是这样的:
现在已经写好了这样一个函数:
int CZTER_adapter::retrievePerfData_BSC(const CString &sEquip,const CString &rcver,
const CString &beginTime,const CString &endTime){……}
想请教大家,我在命令行中输入四个参数(分别对应这个函数中的四个参数)来调用这个函数,请问下大家该怎么做啊?
11 个解决方案
#1
编写代码将字符串和函数对应起来
运行时读入字符串,解析字符串,选择对应函数
运行时读入字符串,解析字符串,选择对应函数
#2
你这个又不是main函数,命令行怎么直接调用?
#3
#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;
}
}
}
我这样写,然后在命令行中输入四个参数,能直接调用这个函数吗?
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
#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;
}
}
}
我这样写,然后在命令行中输入四个参数,能直接调用这个函数吗?
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是宽字符