如何在解析ini文件时验证值和键

时间:2014-09-03 10:56:10

标签: c++ boost boost-program-options

我正在使用boost :: program_options来解析ini文件。使用program_options可以轻松进行简单的ini文件解析。我可以添加允许的选项,它会自动验证选项。 有没有办法验证价值?假设我只允许允许列表中的字符串值。 例如,对于密钥“TransportType”,允许的值是Socket或RPC。

TransportType = Socket(不允许使用Socket或RPC以外的任何东西)

我正在使用config_file_iterator,我传递了一个选项列表。但它只验证键而不是值。

以下是代码段。

namespace pod = boost::program_options::detail;

std::ifstream config("settings.ini");
if(!config)
{
    std::cerr<<"error"<<std::endl;
    return 1;
}

//parameters
std::set<std::string> options;
std::map<std::string, std::string> parameters;
options.insert("TransportType");
options.insert("URL");
options.insert("Host");
options.insert("Port");

try
{      
    for (pod::config_file_iterator i(config, options), e ; i != e; ++i)
    {
        std::cout << i->string_key <<" "<<i->value[0] << std::endl;
        parameters[i->string_key] = i->value[0];
    }        
}
catch(std::exception& e)    
{
    std::cerr<<"Exception: "<<e.what()<<std::endl;
}

0 个答案:

没有答案