0

コマンド ライン引数 (0 より大きい整数) を取り、それを関数の整数パラメーターとして使用したいと思います (関数のどの部分を使用するかを決定するため)。

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++ の初心者であり、正しい方向に向ける情報はすべて素晴らしいものです。お時間をいただきありがとうございます。

4

2 に答える 2

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();
    }
}
于 2012-11-18T00:48:44.130 に答える
1

argv[1]タイプchar*です。strtolを使用して整数に変換します。

char *ptr;
int n = strtol(argv[1], ptr, 10);
/* Error checking */
于 2012-11-18T00:32:00.703 に答える