Ввод из командной строки
у меня есть программа на C++, который я запускаю для многих значений параметра. Я хочу сделать следующее:: Допустим, у меня есть два параметра:
int main(){
    double a;
    double b;
//some more lines of codes
}
теперь после компиляции я хочу запустить его как
./output.out 2.2 5.4
, так что a принимает значение 2,2 и b принимает значение 5.4.
конечно, один из способов-это использовать cin>> но я не могу этого сделать, потому что я запустить программу на кластере.
5 ответов
вам нужно использовать аргументы командной строки в своем main:
int main(int argc, char* argv[]) {
    if (argc != 3) return -1;
    double a = atof(argv[1]);
    double b = atof(argv[2]);
    ...
    return 0;
}
этот код анализирует параметры с помощью atof, вы могли бы использовать stringstream.
если вы хотите использовать параметры командной строки, то нет, вы не использовать cin Как стало слишком поздно.  Вам нужно изменить свой main подпись:
int main(int argc, char *argv[]) {
    // argc is the argument count
    // argv contains the arguments "2.2" and "5.4"
}
так у вас теперь есть argv который является массивом указателей на char каждый указатель указывает на аргумент, который был принят.  Первый аргумент обычно является путем к исполняемому файлу, последующие аргументы-это все, что было передано при запуске приложения, в виде указателей на char.
вам нужно будет преобразовать char*С doubles в этом случае.
вот для чего нужны аргументы командной строки:
#include <sstream>
int main(int argc, char *argv[])
{
    if (argv < 3)
       // show error
    double a, b;
    std::string input = argv[1];
    std::stringstream ss = std::stringstream(input);
    ss >> a;
    input = argv[2];
    ss = std::stringstream(input);
    ss >> b;
    // a and b are now both successfully parsed in the application
}
вы смотрели параметры программы boost?
Он примет аргументы командной строки, как и многие другие, и позволит вам обеспечить очень последовательный, чистый и расширяемый интерфейс командной строки.
вы можете использовать эту форму main() функция для получения аргументов командной строки
    int main(int argc, char* argv[]) { 
    } 
где значения argv[] массив содержит переменные командной строки как char* что вам нужно будет преобразовать в floats или doubles в вашем случае
