Учимся программировать на языке C++

Использование аргументов командной строки


Как вы знаете, большинство команд, вводимых вами в ответ на системную подсказку, позволяют включать дополнительную информацию, такую как имя файла. Например, при использовании команды MS-DOS COPY для копирования содержимого одного файла во второй файл вы указываете в командной строке имена обоих файлов. Аналогично, если ваш компилятор основан на командной строке, вы должны включать имя вашего исходного файла при вызове компилятора. В этом уроке рассмотрены способы, с помощью которых ваши программы на C++ обращаются к аргументам командной строки. К концу данного урока вы освоите следующие основные концепции:

    Программы на C++ трактуют аргументы командной строки как параметры функции main.

    По традиции C++ передает два (иногда три) параметра в main, которые в большинстве программ называются argc и argv.

    Параметр argc содержит количество аргументов командной строки, передаваемых в вашу программу.

    Параметр argv представляет собой массив указателей на символьные строки, каждая из которых соответствует одному параметру командной строки.

    В зависимости от компилятора ваши программы могут получить доступ к третьему параметру с именем env, который представляет собой массив указателей на символьные строки, указывающих на переменные среды.

    Способность программ обращаться к аргументам командной строки повышает количество способов, которыми вы можете использовать одну и ту же программу. Например, вы можете создать свою собственную программу, используемую для копирования любого исходного файла, который вы указываете в качестве первого аргумента командной строки, в целевой файл, который вы указываете в качестве второго аргумента командной строки.


    Следующая программа FILESHOW.CPP использует аргументы командной строки для вывода содержимого указанного пользователем файла на экран. Например, чтобы использовать программу FILESHOW для вывода содержимого файла AUTOEXEC.BAT из корневого каталога, ваша командная строка становится следующей:

    C: \ FILESHOW \AUTOEXEC.BAT Enter

    Следующие операторы реализуют программу FILESHOW.CPP. Эта программа начинается с проверки параметра argc, чтобы убедиться, что пользователь указал файл в командной строке. Если пользователь включает имя файла параметр argc будет содержать значение 2. Далее программа открывает и выводит содержимое файла, используя методы, которые вы изучали в уроке 34. Как видите, если программа не может открыть указанный файл, она выводит сообщение об ошибке и завершается:

    #include iostream.h



    #include fstream.h

    #include stdlib.h

    void main(int argc, char *argv[])

    {

    char line[256];

    if (argc 2)

    {

    cerr "Вы должны указать имя файла" endl;

    exit(1);

    }

    ifstream input_file(argv[1]) ;

    if (input_file.fail()) cerr "Ошибка открытия BOOKINPO.DAT" endl;

    else

    {

    while ((! input_file.eof()) (! input_file.fail()))

    {

    input_file.getline(line, sizeof(line));

    if (! input_file.fail()) cout line endl;

    }

    }

    }



    Содержание раздела