我想接受命令行参数(将是一个大于零的整数)并将其用作函数中的整数参数(以决定使用函数的哪个部分)。
double func(double x, double y, double z, int n) {
if (n==1) { return 1; }
if (n==2) { return 2; }
// etc
}
int main (int argc, char *argv[]) {
int n = argv[1];
// etc, later I call func(x,y,z,n) with this definition of n
}
当我尝试编译时,我收到一些警告:
warning: invalid conversion from ‘char*’ to ‘int’
warning: initializing argument 4 of ‘double func(double, double, double, int)’
我想我理解为什么会这样,我只是不知道如何解决它。到目前为止我没有发现任何谷歌搜索太有帮助了。我对C ++很陌生,任何指向正确方向的信息都会很棒。感谢您的时间。
答案 0 :(得分:1)
argv[1]
的类型为char*
。使用strtol将其转换为整数:
char *ptr;
int n = strtol(argv[1], ptr, 10);
/* Error checking */
答案 1 :(得分:1)
您可以使用std::istringstream
转换数字:
int main(int ac, char * av[]) {
int av1;
if (2 <= ac
&& std::istringstream(av[1]) >> av1) {
do_something_with(av1);
}
else {
report_error();
}
}