При создании консольного приложения в языке программирования С++, автоматически создается строка очень похожая на эту:
int main(int argc, char* argv[]) // параметры функции main()
Эта строка — заголовок главной функции main()
, в скобочках объявлены параметры argс и argv. Так вот, если программу запускать через командную строку, то существует возможность передать какую-либо информацию этой программе, для этого и существуют параметры argc
и argv[]
. Параметр argc
имеет тип данных int
, и содержит количество параметров, передаваемых в функцию main
. Причем argc
всегда не меньше 1, даже когда мы не передаем никакой информации, так как первым параметром считается имя функции. Параметр argv[]
это массив указателей на строки. Через командную строку можно передать только данные строкового типа. Указатели и строки — это две большие темы, под которые созданы отдельные разделы. Так вот именно через параметр argv[]
и передается какая-либо информация. Разработаем программу, которую будем запускать через командную строку Windows, и передавать ей некоторую информацию.
// argc_argv.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { if (argc > 1)// если передаем аргументы, то argc будет больше 1(в зависимости от кол-ва аргументов) { cout << argv[1]<<endl;// вывод второй строки из массива указателей на строки(нумерация в строках начинается с 0 ) } else { cout << "Not arguments" << endl; } system("pause"); return 0; }
// код Code::Blocks
// код Dev-C++
// argc_argv.cpp: определяет точку входа для консольного приложения. #include <iostream> using namespace std; int main(int argc, char* argv[]) { if (argc > 1)// если передаем аргументы, то argc будет больше 1(в зависимости от кол-ва аргументов) { cout << argv[1]<<endl;// вывод второй строки из массива указателей на строки(нумерация в строках начинается с 0 ) } else { cout << "Not arguments" << endl; } return 0; }
После того как отладили программу, открываем командную строку Windows и перетаскиваем в окно командной строки экзэшник нашей программы, в командной строке отобразится полный путь к программе(но можно прописать путь к программе в ручную), после этого можно нажимать ENTER и программа запустится (см. Рисунок 1).
Рисунок 1 — Параметры функции main
Так как мы просто запустили программу и не передавали ей никаких аргументов, появилось сообщение Not arguments
. На рисунке 2 изображён запуск этой же программы через командную строку, но уже с передачей ей аргумента Open
.
Рисунок 2 — Параметры функции main
Аргументом является слово Open
, как видно из рисунка, это слово появилось на экране. Передавать можно несколько параметров сразу, отделяя их между собой запятой. Если необходимо передать параметр состоящий из нескольких слов, то их необходимо взять в двойные кавычки, и тогда эти слова будут считаться как один параметр. Например, на рисунке изображен запуск программы, с передачей ей аргумента, состоящего из двух слов — It work
.
Рисунок 3 — Параметры функции main
А если убрать кавычки. То увидим только слово It
. Если не планируется передавать какую-либо информацию при запуске программы, то можно удалить аргументы в функции main()
, также можно менять имена данных аргументов. Иногда встречается модификации параметров argc
и argv[]
, но это все зависит от типа создаваемого приложения или от среды разработки.
Комментарии
Muthabor
а как передавать параметры отличные от типа «char»?
Богдан
у MVC не скомпилировать а построить решение
kybik
ну так нажми скомпилировать, тогда будет *.exe
Богдан
у MVC не скомпилировать а построить решение
Крабь Апров
у меня программа не сохраняется как *.exe, он мне разрешает много вариантов кроме этого, а сохранив под *.cpp он мне открывает сам mvs