Я пишу программу на C ++, а компилятор — G ++
Теперь в терминале, если я наберу ./main и введу его, он запустится.
И все же я хочу добавить что-то вроде флага: ./main -apple или ./main -orange
яблоко и апельсин — два разных метода для расчета одной и той же задачи. Как мне это сделать?
Я имею в виду, что когда мы работаем с Linux, мы обычно можем набрать dash sth, как это работает и что мне делать в моей программе?
Любой пример или ссылка?
Заранее спасибо!
int main(int argc, const char* argv[]) {
for(int i = 0; i < argc; ++i) {
// argv[i] contains your argument(s)
}
}
Еще несколько деталей:
Принятие аргументов, переданных вашей программе, может быть сделано путем добавления двух аргументов в main
: Один int
, которому присваивается количество аргументов, которые вы даете своей программе, и один const char* []
, который является массивом C строк.
Один пример: скажем, у вас есть программа main
который должен реагировать на аргументы apple
а также orange
, Звонок может выглядеть так: ./main apple orange
, argc
будет равно 3 (считая «main», «apple» и «orange»), и итерация по массиву даст 3 строки.
// executed from terminal via "./main apple orange"#include <string>
int main(int argc, const char* argv[]) {
// argc will be 3
// so the loop iterates 3 times
for(int i = 0; i < argc; ++i) {
if(std::string(argc[i]) == "apple") {
// on second iteration argc[i] is "apple"eatApple();
}
else if(std::string(argc[i]) == "orange") {
// on third iteration argc[i] is "orange"squeezeOrange();
}
else {
// on first iteration argc[i] (which is then argc[0]) will contain "main"// so do nothing
}
}
}
Таким образом, вы можете выполнять задачи в соответствии с аргументами приложения, если вы хотите только сжать апельсин, просто введите один аргумент, например ./main orange
,