C++字符* 到整数错误

C++ char* to int error

本文关键字:整数 错误 字符 C++      更新时间:2023-10-16

我想采用一个命令行参数(它将是一个大于零的整数)并将其用作函数中的整数参数(以决定使用函数的哪一部分)。

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++很陌生,任何能为我指明正确方向的信息都会很棒。谢谢你的时间。

argv[1]的类型

char* 。使用 strtol 将其转换为整数:

char *ptr;
int n = strtol(argv[1], ptr, 10);
/* Error checking */
您可以使用

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();
    }
}
相关文章: