как наиболее грамотно распарсить командную строку?
Языки: C++, bash, C.
Мне надо распарсить опции командной строки. При этом, опции не должны быть позиционно зависимыми. Т е, если пользователь введет ключ -a, то программа должна получить ключ, даже если он расположен или сразу после argv[0], или прямо в argv[argc - 1]. Я не хочу ради этого приписывать кучу if-else, а у меня ещё и полно таких опций. Не подскажете решения более краткого и экономичного, чем if-else и switch-case?
Ответы (1 шт):
Когда-то для подобных целей я написал себе простую библиотечку и до сих пор пользуюсь ей в маленьких программках, когда не хочется тащить что-то монструозное.
Из того, что упоминали в комментариях, я рассматривал boost.programm_options, мне он показался раздутым для моих простых целей.
Также рассматривал другие популярные решения:
- boost.property_tree
- libconfig
Все они меня, как водится, чем-то не устроили.
То есть они все хорошие, но либо слишком абстрактные, либо слишком тяжелые, либо слишком мощные и т.п.
На гитхабе, где хостится мое решение, есть Readme с маленьким обоснованием, почему решил написать свое.
Ссылка: https://github.com/o2gy84/libproperty