
Очередная библиотека для парсинга аргументов командной строки на C++. Встречайте FancyArgumentParser
idimus 19 минут назад Очередная библиотека для парсинга аргументов командной строки на C++. Встречайте FancyArgumentParser Средний 7 мин 683 C++ * Системное программирование * Туториал Перевод Автор оригинала: idimus...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: idimus 19 минут назад Очередная библиотека для парсинга аргументов командной строки на C++. Встречайте FancyArgumentParser Средний 7 мин 683 C++ * Системное программирование * Туториал Перевод Автор оригинала: idimus Вступление (можно пропустить)Всем привет! C++ всегда был моим основным языком программирования, начиная со стандарта C++11, который стал важным этапом в развитии языка.
Несмотря на достаточно динамичные обновления в новых стандартах, в C++ остается много пробелов, которые стандарт не закрывает. Например, у нас до сих пор нет стандартного пакетного менеджера или системы сборки, как в современных языках программирования. Пока в других языках есть полноценные системы сборки, в C++ мы лишены такой роскоши.
Технические детали
Каждый проект должен для себя решить, нужно ли использовать менеджер пакетов: чистые репозитории, vcpkg или conan. Дальше необходимо выбрать систему сборки: нативные, cmake, waf или что-то ещё более экзотическое. В дополнение к отсутствию нормальной системы сборки, прицепом идёт малое количество стандартных прикладных библиотек.
Нет стандартной библиотеки для сетей, графики. Да хотя бы обычный JSON распарсить нельзя из коробки. Проблемы решаемые, но там целый зоопарк решений за пределами stl.
Для командной строки существует не так много хороших библиотек: CLI11, cxxopts, argparse и всемогущий Boost. Почти у всех них есть одна большая проблема — "первородный грех" многих C/C++ библиотек: мудрёный синтаксис. К счастью, за исключением Boost, все они являются single-header библиотеками, поэтому вам не нужно линковать их с чем-либо ещё, хоть где-то повезло.
Отраслевые последствия
Имея опыт работы с Python, где ситуация с библиотеками из коробки гораздо лучше, я решил создать свою собственную библиотеку для парсинга аргументов командной строки, вдохновленную Python-библиотекой argparse. Я считаю, что именно он должен быть ориентиром, как надо делать такие библиотеки. Но у нас, конечно же, так красиво не получится - язык пока так не позволяет сделать.
Но я попытался как можно ближе. Встречайте Fancy Argument ParserВы можете её установить получить сорцы через ссылку Github или командную строчкуgit clone # или vcpkg install fancyargumentparserЛицензия MIT позволяет очень вольное использование библиотекиОсновные возможностиPure Single-Header: Библиотека состоит из одного файла (argparse. Никаких компиляций исходных файлов или сложных настроек CMake.
Python-подобный синтаксис (C++20): Если вы используете компилятор C++20, можно использовать инициализаторы, что дает чистый и лаконичный синтаксис. Гибкий API: Вы можете выбрать стиль: fluent interface (цепочка вызовов), классический конструктор или современный стиль C++20. Автоматические сокращения: Парсер понимает сокращенные флаги (например, --verb превращается в --verbose), если они уникальны.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





