【问题标题】:how to parse several arguments using command line arguments如何使用命令行参数解析多个参数
【发布时间】:2015-05-19 15:09:44
【问题描述】:

我正在编写一个命令行实用程序,我想在其中解析几个参数:现在我没有从地址读取数据(所以请不要被 -addr 混淆);我的主要目标是设计框架,以便我可以解析如下几个参数。

filename read -addr value -addr2 value2 -addrN valueN -length value -range value -length2 value2 -lengthN valueN -width value -width2 value2 -widthN valueN

N 的最大值为 64,最小值为 1。

请提供一些有价值的建议,以便我可以做到。 谢谢

【问题讨论】:

  • 向我们展示您目前的代码,并解释您的困难。否则,这是“请发送代码”。
  • 我认为我们可以在不进行实际解析的情况下提供帮助:)

标签: c++ command-line-arguments


【解决方案1】:

考虑使用 Getopt 库或对其进行一些修改,它可以让您的生活更轻松。

http://www.boost.org/doc/libs/1_41_0/doc/html/program_options.html

【讨论】:

  • 你能告诉我windows下getopt()的等价物是什么吗?其实我用的是VC++。
【解决方案2】:

典型的main() 原型是这样的:

int main(int argc, char** argv) {
   // stuff
}

当您的程序从命令行执行时,argc 将是您的参数的总数,加上程序本身的名称;您可以将 argv 视为包含参数的字符串数组。

知道argc,解析参数列表应该很容易:)

编辑:一个简短的例子,以防万一。

int main(int argc, char** argv) {
    printf("%d\n", argc);
}

然后,在你的 cl 上:

./program asd asd asd
4

argv[0] 是“程序”,argv[1] 是“asd”,等等

【讨论】:

  • @ Santiago Lezica 嘿,我知道命令行参数,但我正在处理可变数量的参数,就像我可以在命令行提供任意数量的参数一样;这就是导致我问题。你们中的任何人都可以提供关于可变数量参数的帮助,我知道可能是“getopt”可以解决我的问题,但我不知道如何使用它。
  • 只要您知道参数的总数,您就可以遍历它们并确定它们影响哪些设置。只需循环和分析。
猜你喜欢
  • 2011-04-27
  • 2021-11-05
  • 2013-03-06
  • 2013-03-21
  • 2021-07-27
相关资源
最近更新 更多