История изменений
Исправление 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.