我想从命令行调用一个程序,如下所示:
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
来决定?更容易吗?
我新编程和使用VS2008。
答案 0 :(得分:6)
您可以手动解析它们或使用Boost.Program_options。
答案 1 :(得分:2)
逐个分析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
。
答案 2 :(得分:2)
如果可以,我会使用getopt
:这很简单。它也会处理组合选项(例如ls -lt
而不是ls -l -t
),它也会处理带参数的选项,它们出现的顺序也无关紧要。所有这些使得它对于习惯于命令行参数的人来说是“标准的”(通常,选项的顺序是无关紧要的,除非给出相互矛盾的选项......)。
答案 3 :(得分:0)
这已经是其他人所做的,所以如果我是你,我不会把所有时间花在它上面。 以Boost的ProgramOptions为例。