BlinCT
3 января 2019 г. 16:53

Получить входные аргументы при запуске консольного приложения

с++

Всем привет.
Может кто подаст совет, приложение например получает 2 аргумента, они обязательные.
Но если задать больше этих 2 обязательных аргементов то нужно все их запихать в вектор. Колличество больше обязательных 2 может быть каким угодно.
Может кто подскажет какой то удобный способ как это можно реализовать? Или вдруг какой то простой пример есть под рукой?

3

Вам это нравится? Поделитесь в социальных сетях!

7
Evgenii Legotckoi
  • 3 января 2019 г. 16:59

Привет.

Я так думаю, что если дальше покопать boost::program_options , то можно найти вариант установки вектора значений.

    Evgenii Legotckoi
    • 3 января 2019 г. 17:06
    • (ред.)

    Если быть точным, то есть вариант с multitoken() для std::vector и program_options , в интернете есть дополнительные варианты. Сам пока не реализовывал такое.

      BlinCT
      • 3 января 2019 г. 17:14

      Спасибо, наверное это как раз и буду сейчас пробовать для реализации.

        BlinCT
        • 3 января 2019 г. 17:51

        Вариант пока без буста выглядит достаточно тривиальным)

        1. std::vector<std::string> args;
        2. for( int i = 0; i < argc; ++i )
        3. {
        4. args.emplace_back( argv[i] );
        5. }

        То есть задв не 0 а с той позиции с какой нам надо получить аргементы, и мы получим нужный нам вектор)
        С бустом чуть позже.

          Evgenii Legotckoi
          • 3 января 2019 г. 17:54

          Да, только здесь появляется зависимость на позицию аргументов.

          Вопрос в том, сколько напишешь кода для валидации всего этого добра. С бустом немного посложнее будет, но там больше готового функционала по проверкам. Хотя, если не требуется на данном этапе, то можно будет обойтись и вариантом с позицией аргументов.

            qdron
            • 3 января 2019 г. 20:16

            QCommandLineParser не пробовали использовать? или не подошел?

              BlinCT
              • 3 января 2019 г. 20:36

              Фреймворк не используем) так что не вариант.

                Комментарии

                Только авторизованные пользователи могут публиковать комментарии.
                Пожалуйста, авторизуйтесь или зарегистрируйтесь