首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理命令行选项和配置文件?

如何处理命令行选项和配置文件?
EN

Stack Overflow用户
提问于 2009-06-13 04:30:03
回答 9查看 7.6K关注 0票数 13

您使用哪些包来处理命令行选项、设置和配置文件?

我正在寻找从命令行和/或配置文件中读取用户定义选项的内容。

选项(设置)应该被划分成不同的组,这样我就可以在代码中将不同的(子集)选项传递给不同的对象。

我知道boost::program_options,但我不太习惯API。有轻量化的替代品吗?

(顺便说一句,您是否曾在代码中使用可以从任何地方读取的全局选项对象?或者你会认为这是邪恶的?)

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-06-13 06:52:03

你不会喜欢我的答案的。我用boost::program_options。界面需要一些习惯,但一旦你放下它,它是惊人的。只需确保进行大量单元测试,因为如果语法错误,获得运行时错误。

而且,是的,我将它们存储在一个单例对象(只读)中。我不认为在这种情况下是邪恶的。这是我能想到的少数几个单身人士可以接受的案例之一。

票数 5
EN

Stack Overflow用户

发布于 2009-06-13 07:49:21

在谷歌,我们使用旗子。它不做配置文件,但是对于标志,它比使用getopt少得多。

代码语言:javascript
运行
复制
#include <gflags/gflags.h>
DEFINE_string(server, "foo", "What server to connect to");
int main(int argc, char* argv[]) {
    google::ParseCommandLineFlags(&argc, &argv, true);
    if (!server.empty()) {
        Connect(server);
    }
}

您将DEFINE_foo放在需要知道标志值的文件的顶部。如果其他文件也需要知道值,则在其中使用DECLARE_foo。对于测试也有很好的支持,所以单元测试可以独立地设置不同的标志。

票数 11
EN

Stack Overflow用户

发布于 2009-06-15 01:49:07

对于命令行和C++,我一直是TCLAP的粉丝:模板化命令行参数分析器。

http://sourceforge.net/projects/tclap/

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/989980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档