[英]C++ program parsing arguments
我想制作一個從命令行這樣調用的程序:
myprogram.exe -F/-T FILE/TEXT -W FILE.WAV -P FILE.PHO -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.