Как получить в программе на С++ параметры командной строки

186 прочитали

Несмотря на то, что сегодня не так часто создаются консольные приложения, всё-таки знать о них надо. И также бывает необходимо передать в программу какие-то данные через командную строку. Например, так:

test 1

Здесь в программу test мы передаём число 1. Зачем нам это - другой вопрос. Думать надо не об этом, а о том, как потом в вашей программе можно получить это число. Принципы получения параметров командной строки в программе похожи почти во всех языках. Но мы рассмотрим это на примере языка С++.

Когда вы создаёте новый проект консольного приложения на С++ в простых средствах разработки, таких как Dev-C++, то автоматически создаётся примерно такой код:

#include <iostream>
int main(int argc, char** argv)
{
return 0;
}

Обратите внимание, что у главной функции main() по умолчанию создаётся два входных параметра (аргумента). Именно их и можно использовать для получения данных из командной строки.

В параметре argc содержится количество параметров, переданных в командной строке. А argv - это массив самих параметров. Соответственно, зная количество параметров и имея массив этих параметров, мы можем получить доступ к любому параметру и прочитать его. Сделать это можно, например, так:

Несмотря на то, что сегодня не так часто создаются консольные приложения, всё-таки знать о них надо. И также бывает необходимо передать в программу какие-то данные через командную строку.

Здесь мы проверяем количество параметров. Если параметры от пользователя есть, то выводим их список в цикле.

Обратите внимание, что всегда есть хотя бы один параметр. Он находится в нулевом элементе массива параметров и содержит путь к файлу программы (так, кстати, вы можете узнать путь к программе). Поэтому значение переменной argc не может быть меньше 1. И, соответственно, пользовательские параметры находятся в массиве, начиная с индекса 1.

На этом всё. В следующий раз покажу примеры и некоторые фишки передачи параметров в программу. Так что подписывайтесь на канал, чтобы ничего не пропустить.