我正在使用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;
}