該應用程序有兩個選項:a
和file
。 file
是一個位置選項。 a
和file
都有一個string類型的參數,可以省略。 (我爲兩者都設置了一個隱含的空字符串)。Boost程序選項可選參數優先
的期望的行爲如下:
$ program
- >file: ""
$ program file.txt
- >file: "file.txt"
$ program --a
- >a: "", file: ""
$ program --a file.txt
- >a: "", file: "file.txt"
$ program --a x file.txt
- >a: "x", file: "file.txt"
然而,選項4 intepreted爲a: "file.txt", file: ""
。有什麼辦法可以告訴program_options如何解決這種模糊的情況? ($ program --a -- file.txt
確實按預期工作,但我希望在沒有額外的情況下也能正常工作。)我正在使用空字符串來表示當前未指定,但這不是必需的。
的'了'單獨選項在默認情況下所有項目操作,而參數允許過濾。 'file'可以明確指定,但如果不是,程序將從配置文件中讀取。 – Ruud 2012-07-22 19:00:31
如果'a'選項的值在邏輯上是足夠的,爲什麼你把它作爲一個隱含的?根據你的話,你允許用戶將過濾器作爲「」(沒有信息),但我相信這沒有意義。如果你不允許「a」的impilicit值,你的(4)中的邏輯將被保留。 – Riga 2012-07-23 10:03:40
未設置隱式空字符串會得到相同的結果。請注意,理想情況下,空字符串與「未指定」的值不同,我使用空字符串來表示「未指定」。過濾器「」等於根本不過濾。 – Ruud 2012-08-01 16:32:53