ksacvet777.moy.su
Главная » Статьи » 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;
};





Категория: IT | Добавил: ksacvet777 (09.02.2014)
Просмотров: 1425 | Теги: командная строка, парсер, command line, Parser, cmdline, CPP, Line, Command, C++ | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: