每次我写另一个小型c ++玩具程序时,我都会遇到一个易于使用的小型选项/参数类。以下是它应该做的事情:
我想要做的是将指向此类的指针传递给构建器和所有策略对象,以便他们可以读取我正在运行的算法的参数(例如,哪种算法,最大迭代次数等)< / p>
有人能指出我实现至少完成其中一些事情的实现吗?
答案 0 :(得分:9)
Boost Program-Options很漂亮。我认为除了可能的边界验证之外,它会列出您列表中的所有内容。但即便如此,您也可以非常轻松地提供自定义验证器。
更新:正如@stefan在评论中正确指出的那样,这也是“小”的失败!如果你静态链接它,它会为你的二进制文件增加一个很重要的块。
答案 1 :(得分:0)
您可能需要考虑以JSON格式存储配置。虽然从命令行阅读JSON有点尴尬,但它仍然完全可行,甚至相当清晰。除此之外,您还可以获得很多灵活性,包括嵌套配置选项,反序列化复杂数据类型的工具等。
有许多用于将JSON反序列化为C ++的库,请参阅例如其中一些this discussion and comparison。有些很小,有些很快(虽然你实际上并不需要它们很快 - 配置数据非常小),大多数都非常便携。可以找到一个长列表和一些基准测试结果(尽管不是特征比较)here;其中一些库实际上可能适合用于阅读配置选项,尽管这只是一个疯狂的猜测。