簡體   English   中英

C ++程序解析參數

[英]C++ program parsing arguments

我想制作一個從命令行這樣調用的程序:

myprogram.exe -F/-T FILE/TEXT -W FILE.WAV -P FILE.PHO -A

它們分為3部分:

  • 我的程序
  • -F OR -T和文件或文本
  • -W FILE -P FILE和-A(至少一個,最多3個,按任何順序排列(或者,如果復雜,則不然))

因此可以是:

myprogram.exe -T "Text Text, test text" -A

要么:

myprogram.exe -F FILENAME -A

要么:

myprogram.exe -F FILENAME -P FILENAME -W FILENAME

等等

-A是一個函數(需要文本或文件) -W用文本/文件中的信息寫入WAV文件-P做與-W類似的操作

最好的處理方法是什么? 一一分析argv[x]並確定if s? 容易些嗎?

我是編程和使用VS2008的新手

您可以手動解析它們,也可以使用Boost.Program_options

一對一分析argv [x]

那就是我會做的。 也許維護當前元素的計數器...

unsigned int cur = 0;

if (argc <= 1) {
  .. error 
}

if (!strncmp(argv[cur],"-T",2)) {
  .. process
  ++cur;
}

...

for (;cur < argc;++cur) {
   if (!strncmp(argv[cur],"-F",2)) {
      .. process

   }  
   else if ...
}

有一些命令行解析器。 例如,Unix有getopt

如果可以的話,我會使用getopt :這很簡單。 它也將處理組合選項(例如在ls -lt而不是ls -l -t ),並且也處理帶有參數的選項,並且它們出現的順序也無關緊要。 所有這些使它成為習慣於使用命令行參數的人員的“標准”(通常,選項的順序無關緊要,除非給出矛盾的選項...)。

這已經由其他人完成,所以如果我是你,我不會花所有的時間在上面。 例如,查看Boost的ProgramOptions。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM