之前用過 getopt 函式對主函式引數進行解析,後發現了 cmdline 這個庫——說是庫,實際只是乙個標頭檔案,非常方便整合到程式中。本文對此庫進行簡單測試。
測試**如下:
/*
如果解析不存在的引數,會報段錯誤,最好加預設值
todo:新增子命令,類似 git log、git status 這樣的
*/#include "cmdline.h"
#include #include using namespace std;
bool g_bprint = false;
// 有些幫助資訊過多,使用函式組裝
char* gethelp(int type)
; if (type == 't')
return info;
}int main(int argc, char *ar**)
catch(const std::exception &e){}
try catch(const std::exception &e)
try catch(const std::exception &e){}
try catch(const std::exception &e){}
try} catch(const std::exception &e){}
// 此法不能判斷不存在的引數
// if (theargs.exist("type"))
// //
if (theargs.exist("rate")) // 非bool型別,似乎也不能如此判斷
if (theargs.exist("print"))
return 0;
}
輸出結果如下:
$ ./a.out
argument number must be longer than 0
usage: ./a.out [options] ...
options:
-t, --test test type
autotest - for auto test
dualtest - for dual version test
more comming up... (string [=auto])
-h, --host host name (string [=])
-r, --rate rate number (int [=80])
-p, --print show message
-?, --help print this message
$ ./a.out -r 100 -h latelee.org
test type: auto
param [bad] not exist...
host: latelee.org
rest args:
100
命令列解析
不想自已分析命令列的話也可以 lpwstr lpwargv lpwargv commandlinetoargvw getcommandlinew dwcount dwcount的值即為命令列引數的個數 像控制台程式一樣,引數也包括本執行檔案的全路徑 lpwargv為乙個lpwstr 的指標,需要按如...
C 命令列解析工具
我將告訴大家兩個方法去獲取c 輸入的命令列引數。第乙個方法 林選臣大神寫的,他的方法很簡單。首先複製兩個類到專案 public class commandlineargumentparser public static commandlineargumentparser parse string a...
C 命令列解析工具
我將告訴大家兩個方法去獲取c 輸入的命令列引數。第乙個方法 林選臣大神寫的,他的方法很簡單。首先複製兩個類到專案 public class commandlineargumentparser public static commandlineargumentparser parse string a...