2012-11-03 45 views
0

我想在C++程序中使用getopt來解析命令行參數。 參數是-d xxx,-s xxx和 - ?. 我無法捕獲 - ?參數,我想打印一個標準的使用信息。getopt - capture'?'

while ((c = getopt (argc, argv, "?d:s:")) != -1) { 
    switch (c) { 
     case 'd': 
      ...do stuff 
      break; 
     case 's': 
     ... do stuff 
      break; 
     case '?': 
      // From example on GNU page, seems to capture -d, -s when no args provided. 
      // Gets here when -d or -s provided, but no arguments for these options. 
     default: 
      // shut down 
} 

嘗試,因爲我可能,我似乎無法捕捉「 - ?」選項。有沒有特別的技巧來抓住'?'在其自己的?我是否提供了getopt的正確模式(即'?d:s:') 此刻,c正被設置爲'?'只要提供了無效的選項,即使'?'不在命令行提供。

謝謝你們。

+1

「getopt」使用'?'作爲特殊值的事實是給你一個免費的東西,你不應該用它來顯示幫助。這就是'-h'和'--help'的用處。遵守這些慣例而不是做自己的事情是值得的。 –

回答

5

getopt使用'?'作爲特殊值來表示缺失選項值或未知選項。所以我不認爲有什麼辦法可以使用getopt來處理' - ?'。

我會爲幫助信息推薦'-h'。這是一個常見的慣例。

+1

謝謝john - gotchya,?不適合使用,最好使用-h或--help。 – Pete855217