Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / ооп / 4_кол / Лекції / ООП (16. Робота з потоками).doc
Скачиваний:
23
Добавлен:
30.05.2020
Размер:
240.13 Кб
Скачать

Установка параметрів введення-виводу за допомогою коммандной рядка

Багато операційних систем, такі як DOS і UNIX, дозволяють користувачеві виконувати установки деяких параметрів при запуску програми. Ці установки називаються опціями командного рядка і, як правило, відділяються один від одного пропусками, наприклад:

SomeProgram Param1 Param2 Param3

Ці параметри не передаються безпосередньо у функцію main(). Замість цього функція main() програми може приймати два інших параметра. Перший — це цілочисельне значення, вказуюче число аргументів командного рядка з врахуванням імені програми. Тому мінімальне значення цього параметра дорівнює одиниці (задається за умовчанням). Для показаного вище командного рядка значення параметра буде рівне чотирьом. (Ім'я SomeProgram плюс три параметри в сумі дають чотири аргументи командного рядка.)

Другий параметр, передаваний функції main(), — це масив покажчиків на рядки символів. Оскільки ім'я масиву є постійним покажчиком на перший елемент масиву, можна оголосити цей аргумент як покажчик на покажчик типа char, покажчик на масив символів або масив масивів символів.

Зазвичай перший аргумент називається argc (argument count — кількість аргументів), проте ви можете привласнити йому будь-яке ім'я, яке вам подобається. Другий аргумент частенько називається argv (argument vector — вектор аргументів), проте це ім'я також не є обов'язковим.

Як правило, за допомогою argc перевіряється кількість встановлених аргументів коммандной рядка, після чого для доступу до них використовується argv. Звернете увагу: argv[0] — це ім'я програми, а argv[1] — перший аргумент коммандной рядка. Якщо програма приймає як аргументи два числові значення, потрібно буде перетворити їх в рядки. У лістингу 19 показаний приклад використання аргументів командного рядка.

Лістинг 19. Використання аргументів командного рядка 

1: #include <iostream.h>

2: int main(int argc, char *>argv)

3: {

4:    cout << "Received " << argc << " arguments...\n";

5:    for (int i=0; i<argc; i++)

6:      cout << "argument " << i << ": " << argv[i] << endl;

7:    return 0;

8: }

Результат:

TestProgram Teach Yourself C++ In 21 Days

Received 7 arguments...

argument 0: TestProgram.exe

argument 1: Teach

argument 2: Yourself

argument 3: C++

argument 4: In

argument 5: 21

argument 6: Days

Аналіз: У функції main() оголошуються два аргументи: argc — цілочисельне значення, вказуюче число аргументів командного рядка, і argv — покажчик на масив рядків. Кожен елемент цього масиву представляє аргумент командного рядка. Звернете увагу, argv можна також оголосити як char *argv[] або char[][]. Програміст може вибрати варіант, який йому більш до душі. Навіть якщо в програмі цей аргумент буде оголошений як покажчик на покажчик, для доступу до певних елементів можна скористатися індексом зсуву елементу від початку масиву.

У рядку 4 масив argv використовується для виведення числа встановлених аргументів командного рядка. Всього їх виявилося сім, включаючи ім'я програми.

У рядках 5 і 6 задається цикл for, який виводить значення всіх аргументів командного рядка окремо, звертаючись до них по імені масиву argv з вказівкою зсуву [i]. Для виведення значень аргументів використовується об'єкт cout.

Лістинг 20 є переписаною версією лістингу 18, в якій ім'я файлу задається як аргумент командного рядка.