Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2013, 19:55   #1
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию Аргументы командной строки

Сейчас по Шилдту прохожу аргументы командной строки, хотелось бы попросить у вас помощи, так как я не совсем понял что это такое.
Например, есть программа:
Код:
int main(int argc, char* argv[])
{
if(argc != 2)
{
    cout << "Вы забыли ввести свое имя.\n";
    
}
    cout << "Привет, " << argv[1] << endl;
    return 0;
}
Как мне передать аргументы в программу? Видь при компиляции нет возможности взаимодействовать с консолью.
RussDragon вне форума Ответить с цитированием
Старый 05.05.2013, 20:58   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

При компиляции да.
Вариант для гиков - открываете консоль и запускаете вашу программу как-то так
Код:
C:/MyProgramm/MyProgramm.exe args0 args1 args2
Аргументы разделены пробелами! (они будут записаны в разные строки, в массиве строк).

или еще вариант, создаете ярлык к вашей проге и там указываете что-то типа такого (см. скрин)
Изображения
Тип файла: png Ярлык.png (56.8 Кб, 69 просмотров)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 05.05.2013, 21:20   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в параметрах отладчика можно указать параметры как бы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.05.2013, 21:25   #4
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Ага, то есть аргументы командной строки работают только тогда, когда программа запускается через консоль?
RussDragon вне форума Ответить с цитированием
Старый 06.05.2013, 04:58   #5
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Нет. Например, ассоциации файлов с опред. расширениями.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 06.05.2013, 08:17   #6
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от RussDragon Посмотреть сообщение
Ага, то есть аргументы командной строки работают только тогда, когда программа запускается через консоль?
Т.е. вторую половину моего сообщения вы проигнорировали?
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 06.05.2013, 10:56   #7
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Нет, я не думаю что кто-то из пользователей будет возиться с аргументами в ярлыка файла.
RussDragon вне форума Ответить с цитированием
Старый 06.05.2013, 11:06   #8
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от RussDragon Посмотреть сообщение
Нет, я не думаю что кто-то из пользователей будет возиться с аргументами в ярлыка файла.
Как обычно используются аргументы коммандной строки:

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

2. В не консольных программах для запуска их в каком-то особом режиме. (например многие игры так можно запустить в окне, с указанием его размера).

Как реализуется второй случай:

Вариант 1. У вас есть лаунчер, который запускает программу с указанием каких-то параметров коммандной строки.
Яркий пример - игры на движке source.
Все они запускаются файлом hl2.exe, которому передается параметр с указанием игры (например запуск Counter Strike Source hl2.exe -game cstrike)
Вариант 2. Запуск с нестандартными параметрами (например я на винде запуск4аю эклипс принудительно указывая ему некоторые переменные окружения, в том числе пользователя)


Что касается вашей программы, то тут можно имя пользователя брать и переменных окружения. (оставив возможность через параметры коммандной строки задать иное значение).


Кратко сделаю вывод:
Если программа с консольным интерфейсом, то запуск ее через коммандную строку - абсолютно нормальное явление, хоть и дикое для пользователей Widnows (пример - утилита для загрузки и обновления выделеных серверов для игр Valve (за авторством самих Valve) у которой только консольный интерфейс и она управляется только параметрами коммандной строки (извините, но я забыл как утилита называется)).
Если у программы графический интерфейс, то параметры коммандной строки должны быть лишь приятным дополнением.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 06.05.2013 в 11:25.
ROD вне форума Ответить с цитированием
Старый 06.05.2013, 17:53   #9
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Если у программы графический интерфейс, то параметры коммандной строки должны быть лишь приятным дополнением.
Ezhik Kihze же указал на главное исключение - действие "открыть файл file с помощью программы program.exe" порождает вызов "program.exe file". Если программа не обрабатывает своих аргументов, файл не откроется.
Кроме того, возможность осуществления действий через параметры командной строки позволяет включать приложение в пользовательские сценарии.
Abstraction вне форума Ответить с цитированием
Старый 06.05.2013, 19:43   #10
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Т.е. если моя программа будет запускаться через лаунчер, то там следует указывать аргументы командной строки, а если она будет запускаться напрямую, то не нужно?
RussDragon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C] Аргументы командной строки. Вычисление дня недели. hvz- Помощь студентам 1 14.01.2013 20:36
Аргументы командной строки в студии. the_deer_one Общие вопросы C/C++ 8 11.03.2012 22:43
Аргументы командной строки Sadist989 Общие вопросы C/C++ 9 22.06.2011 12:53
аргументы командной строки ololo-schoolboy Общие вопросы C/C++ 2 19.05.2011 22:50
Аргументы командной строки в Boost.test nazavrik Общие вопросы C/C++ 0 18.02.2010 17:23