2012-05-13 22 views
1

當指定一個選項作爲gengetopt:多參數劃分與空間,而不是逗號

option "foo" f "" string optional multiple(1-) 

gengetopt時,稱爲正確構建了數組foo_args

./a.out -f A -f B -f C  # {"A", "B", "C"} 
./a.out -f A,B,C    # {"A", "B", "C"} 

但這只是抓住第一「 A」,並認爲 「B」 和 「C」 是

./a.out -f A B C    # {"A"} 

我不使用無名3210,因爲我沒有任何未命名的參數。我想支持這種風格,因爲它似乎更普遍...... 很容易可能嗎?

+0

誰定義什麼是共同點?對於我來說,逗號分隔的列表看起來更「普遍」... – alk

+0

Unix文件名可能包含逗號,人們習慣於將每個文件名稱作爲一個標記,它是shell的通配工作方式等等(即'./a.out -f * .x'給出'./a.out -f Axx B'不是逗號分隔的列表) – pascal

回答

0

您可能會嘗試在空格分隔列表項目周圍添加引號,如下所示:-f "A B C"並執行額外的解析。

+1

但是如果文件名包含空格怎麼辦?這就是爲什麼你得到一個很好的分裂argv [],所以你不必擔心這樣的事情,外殼爲你做。 – pascal