LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Если у тебя не ЯП на аргументах коммандной строки, то хватит и такого:

std::vector<std::string_view> positionals;
for (int i = 1; i < argc; ++i) {
  const std::string_view param = argv[i];
  if (param == "-h" || param == "--help") {
    printHelp();
    exit(0);
  } else if (param == "-a" || param == "--valueless") {
    setYourFrigginParam();
  } else if (param == "-b" || param == "--valued") {
    if (i == argc - 1)
      throw std::runtime_error("requires value");
    setYourFrigginValue(argv[++i]);
  } else if (param == "--") {
    for (int j = i + 1; j < argc; ++j)
      positionals.emplace_back(argv[j]);
    break;
  } else {
    positionals.emplace_back(param);
  }
}

А если тебе действительно надо ОС специализирующаяся на вытягивании параметров, то извольте тащить Boost/Qt/etc.

Исправление KennyMinigun, :

Если у тебя не ЯП на аргументах коммандной строки, то хватит и такого:

std::vector<std::string_view> positionals;
for (int i = 1; i < argc; ++i) {
  const std::string_view param = argv[i];
  if (param == "-h" || param == "--help") {
    printHelp();
    exit(0);
  } else if (param == "-a" || param == "--valueless") {
    setYourFrigginParam();
  } else if (param == "-b" || param == "--valued") {
    if (i == argc - 1)
      throw std::runtime_error("requires value");
    setYourFrigginValue(argv[++i]);
  } else if (param == "--") {
    for (int j = i + 1; j < argc; ++j)
      positionals.emplace_back(argv[j]);
    break;
  }
}

А если тебе действительно надо ОС специализирующаяся на вытягивании параметров, то извольте тащить Boost/Qt/etc.

Исправление KennyMinigun, :

Если у тебя не ЯП на аргументах коммандной строки, то хватит и такого:

int i = 0;
std::vector<std::string_view> positionals;
while (++i < argc) {
  const std::string_view param = argv[i];
  if (param == "-h" || param == "--help") {
    printHelp();
    exit(0);
  } else if (param == "-a" || param == "--valueless") {
    setYourFrigginParam();
  } else if (param == "-b" || param == "--valued") {
    if (i == argc - 1)
      throw std::runtime_error("requires value");
    setYourFrigginValue(argv[++i]);
  } else if (param == "--") {
    for (int j = i + 1; j < argc; ++j)
      positionals.emplace_back(argv[j]);
    break;
  }
}

А если тебе действительно надо ОС специализирующаяся на вытягивании параметров, то извольте тащить Boost/Qt/etc.

Исходная версия KennyMinigun, :

Если у тебя не ЯП на аргументах коммандной строки, то хватит и такого:

int i = 0;
std::vector<std::string_view> positionals;
while (++i < argc) {
  const std::string_view param = argv[i];
  if (param == "-h" || param == "--help") {
    printHelp();
    exit(0);
  } else if (param == "-a" || param == "--valueless") {
    setYourFrigginParam();
  } else if (param == "-b" || param == "--valued") {
    if (i == argc - 1)
      throw std::runtime_error("requires value");
    setYourFrigginValue(argv[++i]);
  } else if (param == "--") {
    for (int j = i + 1; j < argc; ++j)
      positionals.emplace_back(argv[i]);
    break;
  }
}

А если тебе действительно надо ОС специализирующаяся на вытягивании параметров, то извольте тащить Boost/Qt/etc.