Компиляция программ из консоли — дело несложное. Сейчас уже 2014г., а поиск простейшего примера передачи аргумента в переменную увёл меня куда-то глубоко-глубоко, в бездну. Есть примеры, но я абсолютно ничего по ним не понял, поэтому решил показать максимально простой пример работы с аргументами командной строки C++.
Когда компилируете программу из командной строки, аргументы в командной строке указывать не нужно, потому что они подаются уже готовой программе, а не компилятору. Аргументы можно указать в ярлыке к программе, а можно запустить программу из командной строки, дописав в конец команды запуска программы аргументы для программы. Давайте начнем с самой элементарной задачи.
Создать программу, объявить в программе только одну целочисленную переменную, в которую принять значение из командной строки, после чего вывести записанное в переменную значение на экран
Такая вот примитивная задача, решение которой наглядно продемонстрирует, что работа с командной строкой доступна даже конкретному новичку.
Приступаем к решению.
Cоздаём где-нибудь файл. Я создаю файл Test.cpp в каталоге C:\C++\Test\. Полный путь к созданному мной файлу: C:\C++\Test\Test.cpp
Открываем файл каким-нибудь блокнотом и пишем исходный код на языке C++, сохраняем файл.
Мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream> //Это для работы с объектом cout
#include <stdlib.h> //Это для вызова функции atoi
usingnamespacestd;
intmain(intargc,char*argv[])//Эту запись вы можете видеть достаточно часто, main принимает аргументы
{
intN=atoi(argv[1]);//Записываем в N значение из аргумента
cout<<N<<endl;//Выводим N на экран
cin.get();
return0;
}
Запускаем командную строку. Я буду использовать cmd.exe из Windows.
Компилятор создат исполняемый файл, запишет его согласно указанному нами пути. В этот самый файл и следует передавать аргументы.
Вариант 1.
Создать ярлык к файлу Test.exe (Создавать ярлыки должны уметь все)
В свойствах ярлыка дописать то, что должна принять функция main
т. е., например, в моём случае команда в объекте будет выглядеть так:
C:\C++\Test\Test.exe 5678
Эта цифра, после пути файла, означает, что я передаю в файл значение ‘5678’
В общем, дописали параметр, запустили сам экзешник и видите фигу, запустили ярлык с измененным свойством и видите, что программа поняла это число и успешно выводит его на экран.
Вариант 2.
Любой файл можно запустить из командной строки. Пишете полный путь к файлу и дописываете в конец команды аргументы. В общих чертах выглядит это как описанное проведение изменений в свойствах ярлыка: строчка команды одна и та же, просто способов её вписать много. C:\C++\Test.exe5678
Вот такие пироги. Функция atoi, которая используется в приведённом в статье коде, переводит символьную строку в числовое значение (текст в число). Используется atoi оттого, что *argv[] хранит указатели на начала символьных строк, а строка и число совсем не одно и то же. *argv[] может принимать больше одного аргумента, потому что представляет собой массив символьных строк. Чтобы использовать несколько аргументов, нужно добавлять их в команду, разделяя пробелами.
Демонстрация только что написанного:
Выведем на экран несколько значений.
Изменяем наш файл Test.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <stdlib.h>
usingnamespacestd;
intmain(intargc,char*argv[])
{
inti;
for(i=0;i<argc;i++)cout<<"argv["<<i<<"] содержит "<<argv[i]<<endl;// Вывод с помощью цикла for
Команду вписывайте любым удобным для вас способом: ярлык, командная строка.
Если всё сделали верно, то на экран должны вывестись все отдаваемые в программу числа.
argv[1] = 105 (105 здесь символьная строка, а не число; аналогично ниже)
argv[2] = 95
argv[3] = 85
argv[4] = 75
argv[0] содержит название файла.
Количество передаваемых аргументов сохраняется в argc.
argc явлется счётчиком элементов массива *argv[]
Вот такие вот микроосновы работы с командной строкой вы узнали. Я не очень хочу описывать дальше, т. к. сам в этом дуб дубом, и вот этого, того, что я сейчас описал, скорее всего достаточно, чтобы черпать из других источников знания о работе с командной строкой. Цель этой статьи не показать всего, а дать импульс к развитию в работе с командной строкой, так что строго не судите.
4 комментария на «“С++. MinGW. Аргументы командной строки для начинающих”»
Спасибо! Полезная статья!
В первом коде в строке 9 ошибка, нужно убрать кавычки.
Ок. Спс.
ОХРЕНЕНАЯ СТАТЬЯ!!! Я все понял, что давно не мог понять!