Boost 程序选项中的向量参数
我有两个相关问题:
使用 Boost 程序选项允许传递一系列值的最简单方法是什么?我的目标是避免使用
prog --opt 1 --opt 2 --opt 3
并改用prog --opt 1 2 3
。拥有一个恰好两个数字的选项(例如
prog --opt 137 42
)的最简单方法是什么?
(我不需要任何“免费”程序参数。)
I have two related questions:
What is the simplest way to allow passing a series of values, using Boost Program Options? My aim is to avoid
prog --opt 1 --opt 2 --opt 3
and haveprog --opt 1 2 3
instead.What is the simplest way to have an option that takes exactly two numbers, e.g.
prog --opt 137 42
?
(I don't need any "free" program parameters.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个迟到的答案,但我希望它对某人有所帮助。您可以轻松地在第 1 项中使用相同的技术,只不过您需要对向量中的项数添加另一个验证:
来自 rcollyer 的示例:
This is a late answer but I hope it helps someone. You could easily use the same technique in item #1, except you need to add another validation on the number of items in your vector:
from rcollyer's example:
对于第一部分,这应该可行。
第二部分,需要更多的工作。函数
po::value< /code>
返回一个
po::typed_value< T, charT >
您必须重写几个函数的行为,如下所示,需要附有
then
应该可以工作。我还没有机会测试它,所以它可能包含一些错误。但是,至少应该让您了解您需要什么。
For the first part, this should work
The second part, requires a bit more work. The function
po::value
returns apo::typed_value< T, charT >
on which you'll have to override the behavior of several functions, as followswhich needs to be accompanied by
Then
should work. I have not yet had a chance to test it, so it likely contains a few bugs. But, at a minimum, should give you an idea of what you need.