使用 Boost.Program_options 处理 INI 文件的各个部分
我正在尝试解析 Linux 中的配置 INI 文件。 我想使用 Boost,有人向我指出了程序选项
库。
问题是我可以读取具有语法 field=value
的行,但是如何处理不同的部分,即其中具有 [Section_Name]
的行? 对于下面的代码,我
在我尝试的代码下面总是有一个例外。 谢谢AFG
const char* testFileName = "file.ini";
std::ifstream s;
s.open( testFileName );
namespace pod = boost::program_options::detail;
std::set<std::string> options;
options.insert("a");
options.insert("b");
options.insert("c");
//parser
for (pod::config_file_iterator i(s, options), e ; i != e; ++i)
{
std::cout << i->value[0] << std::endl;
}
I am trying to parse configuration INI files in Linux.
I would like to use Boost and someone pointed me the program options
library.
The thing is that I can read lines having the syntax field=value
, but how to deal with different sections i.e. lines having [Section_Name]
in it?
With the code below I have always an exception
Below the code I tried.
Thanks AFG
const char* testFileName = "file.ini";
std::ifstream s;
s.open( testFileName );
namespace pod = boost::program_options::detail;
std::set<std::string> options;
options.insert("a");
options.insert("b");
options.insert("c");
//parser
for (pod::config_file_iterator i(s, options), e ; i != e; ++i)
{
std::cout << i->value[0] << std::endl;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我正在使用program_options中的
parse_config_file
,所以它可能会有所不同,但如果你有类似name=value的内容,选项的名称是
在SectionName.name
[SectionName]
中。I'm using
parse_config_file
from program_options, so it may be different, but there the name of the option isSectionName.name
if you have something likename=value
in[SectionName]
.正如 etarion 之前所述,选项的标识符必须以其封闭部分为前缀。这是对代码的简单修改来演示:
该程序输出:
As stated earlier by etarion, the identifier of the option must be prefixed by their enclosing section. Here is a simple modification on your code to demonstrate :
This program outputs :