【发布时间】:2011-09-04 18:04:28
【问题描述】:
我有一个 ini 文件,其中包含一些示例值,例如:
[Section1]
Value1 = 10
Value2 = a_text_string
我正在尝试加载这些值并使用 Boost 在我的应用程序中打印它们,但我不明白如何在 C++ 中执行此操作。
我在这个论坛中搜索以找到一些示例(我一直使用 C,因此我的 C++ 不是很好)但我只找到了有关如何一次从文件中读取值的示例。
我只需要在需要时加载一个值,例如 string = Section1.Value2,因为我不需要读取所有值,而只需读取其中的几个。
我想加载单个值并将它们存储在变量中,以便在需要时在我的应用程序中使用它们。
Boost 可以做到这一点吗?
目前,我正在使用此代码:
#include <iostream>
#include <string>
#include <set>
#include <sstream>
#include <exception>
#include <fstream>
#include <boost/config.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
namespace pod = boost::program_options::detail;
int main()
{
std::ifstream s("file.ini");
if(!s)
{
std::cerr<<"error"<<std::endl;
return 1;
}
std::set<std::string> options;
options.insert("Test.a");
options.insert("Test.b");
options.insert("Test.c");
for (boost::program_options::detail::config_file_iterator i(s, options), e ; i != e; ++i)
std::cout << i->value[0] << std::endl;
}
但这只是读取for 循环中的所有值;相反,我只想在需要时读取单个值,并且不需要在文件中插入值,因为它已经写入了我在程序中需要的所有值。
【问题讨论】: