Получение данных из командной строки

Передать данные можно в командной строке после названия файла. Чтобы получить эти данные в программе используется следующий формат функции main():

int main(int argc, char *argv[]) {
   // Инструкции
   return 0;
}

Через первый параметр (argc) доступно количество аргументов, переданных в командной строке. Следует учитывать, что первым аргументом является название исполняемого файла, поэтому значение параметра argc не может быть меньше единицы. Через второй параметр (argv) доступны все аргументы в виде строки (тип char *). Квадратные скобки после названия второго параметра означают, что доступен массив строк. Рассмотрим получение данных из командной строки на примере (листинг 2.11).

Листинг 2.11. Получение данных из командной строки

#include <iostream>

int main(int argc, char *argv[]) {
   std::cout << "argc = " << argc << std::endl;
   for (int i = 0; i < argc; ++i) {
      std::cout << argv[i] << std::endl;
   }
   return 0;
}

Сохраняем программу в файл C:\book\test.cpp. Запускаем командную строку и компилируем программу:

C:\Users\Unicross>cd C:\book

C:\book>set Path=C:\msys64\mingw64\bin;%Path%

C:\book>g++ -Wall -Wconversion -O3 -o test.exe test.cpp

Для запуска программы вводим команду:

C:\book>test.exe -param1 -param2

В этой команде мы передаем программе test.exe некоторые данные (-param1 -param2). Результат выполнения программы будет выглядеть так:

argc = 3
test.exe
-param1
-param2

Первый элемент массива (argv[0]) не всегда будет содержать только название исполняемого файла. Если в командной строке запуск производится следующим образом:

C:\book>C:\book\test.exe -param1 -param2

то элемент будет содержать не только название файла, но и путь к нему:

argc = 3
C:\book\test.exe
-param1
-param2

Если нужно передать значение, которое содержит пробел, то это значение нужно указывать внутри кавычек:

C:\book>test.exe x + y "x + y"
argc = 5
test.exe
x
+
y
x + y

В первом случае мы получили каждый символ по отдельности, а во втором — все символы вместе, указав значение внутри кавычек.

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов