Главная » Статьи » IT |
Простой парсер командной строки для C++
Можно, конечно, просто сравнивать параметр со строкой, но это решение несколько удобнее. Использование очень простое: Вы добавляете параметры в парсер в виде обратных вызовов с именами и выполняете метод parse_commandline. ОСНОВНЫЙ ПУНКТЫ: Первый параметр при запуске приложения - это полный путь к приложению, поэтому он пропускается. В парсере используется строка TCHAR, то есть в зависимости от использования UNICODE она может быть как ANSI так и WIDE. У параметра может быть значение. Значение отделяется от параметра как обычно двоеточием. Например: myopt:488 - параметр myopt с целым значением int. fparam:2.45 - параметр fparam с float значением. У строки парсера есть непосредственные методы для получения значений из строки to_int(), to_float(), to_ansi() Прилагаются два примера использования: Первый - из аргументов main. Второй - из WInApi функции GetCommandLine class cmd_parser { public: // callback if parameter found typedef void ( *cmd_parser_procedure)( const cmd_parser_string& optional ); cmd_parser() {} ~cmd_parser() {} void add_parameter( cmd_parser_procedure proc, const _TCHAR* parameter, const _TCHAR* description ) ; bool parse_commandline( cmd_parser_string cmd ) throw(std::runtime_error) ; bool parse_commandline( int argc , TCHAR* argv[] ) throw(std::runtime_error) ; private: struct item_s { cmd_parser_procedure proc; cmd_parser_string parameter; cmd_parser_string description; item_s() { proc=NULL; } }; std::vector<item_s> m_items; }; | |
Просмотров: 1478 | | |
Всего комментариев: 0 | |