2012-09-14 26 views
0

我正在尋找一些C庫能夠解析一個文件和命令行與一些規則系統,所以我可以指定哪些參數應該被接受,他們的類型是什麼。有任何想法嗎?C:配置文件和命令行解析器

+0

非常接近[C的參數解析助手](http://stackoverflow.com/questions/189972/argument-parsing-helpers-for-c-unix/191821)。 –

+1

所有選項解析函數或庫允許程序指定接受哪些選項,以及哪些選項帶參數。大多數人認爲選項參數是一個字符串;調用代碼對字符串的作用取決於調用代碼。顯然,您可以爲特定類型的參數編寫驗證例程。你是否想要指定配置文件中允許哪些命令行選項(因此通過更改配置文件,更改程序可接受的選項),還是希望允許從文件中讀取複雜的命令行? –

+0

我想指定哪些選項是允許的,所以我不處理會導致錯誤。 – Daniel

回答

2

對於簡單的命令行解析,您有getopt連同getopt_long。這個函數當然也可以用於配置文件,如果它們遵循與命令行選項相同的格式,則可以使用一些「預解析」。

注:getopt是POSIX系統上的標準配置,例如, Linux和Mac OSX,但不在Windows上。儘管Windows有一些實現。

+0

我想到了這一點,甚至做了PoC,但它是一個完整的混亂:解析文件並創建傳遞給getopt_long的行的列表並不像預期的那樣好,我還想得到一些驗證機制而不用寫噸代碼爲每個選項 – Daniel

1

您可以使用提供command line options parser的GLib,您可以爲每個選項指定一個類型。這個庫也提供了一個簡單的key/value file parser。 即使您仍然需要編寫代碼(至少從ini文件生成GOptionEntry),它也許值得您嘗試一下。...
GLib可在Linux,MacOSX和Windows上使用。

+0

我不想與glibc連接加上它仍然需要手動合併結果分析命令行和文件 – Daniel

+0

那麼它是GLIB,而不是glibc。在我看來,它更多的是從你的ini文件創建GOptionEntry數組,並使用這個生成的數組來解析命令行。但是如果你不想鏈接到GLib ... LLVM CommandLine庫可能很有用,但它不是C++。 – Kwariz

+0

對不起,我的意思是說glib,我有簡單的C項目 – Daniel