부스트 프로그램 옵션 설정 파일의 경우 라인이 섹션을 선언하지 않는 경우 (예 : [settings]
) name=value
형식이어야합니다. 귀하의 예를 들어, 다음과 같이 쓰기 :
[plugins]
name = somePlugin
name = HelloWorldPlugin
name = AnotherPlugin
[settings]
type = hello world
플러그인의 목록은 지금 multitoken 옵션이 될 필요가있는 "plugins.name"옵션에 해당합니다.
#include <boost/program_options.hpp>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
int main()
{
namespace po = boost::program_options;
typedef std::vector<std::string> plugin_names_t;
plugin_names_t plugin_names;
std::string settings_type;
// Setup options.
po::options_description desc("Options");
desc.add_options()
("plugins.name", po::value<plugin_names_t>(&plugin_names)->multitoken(),
"plugin names")
("settings.type", po::value<std::string>(&settings_type),
"settings_type");
// Load setting file.
po::variables_map vm;
std::ifstream settings_file("settings.ini" , std::ifstream::in);
po::store(po::parse_config_file(settings_file , desc), vm);
settings_file.close();
po::notify(vm);
// Print settings.
typedef std::vector<std::string>::iterator iterator;
for (plugin_names_t::iterator iterator = plugin_names.begin(),
end = plugin_names.end();
iterator < end;
++iterator)
{
std::cout << "plugin.name: " << *iterator << std::endl;
}
std::cout << "settings.type: " << settings_type << std::endl;
return 0;
}
다음과 같은 출력을 생성합니다 : 아래
는 settings.ini 파일에서 위의 설정을 읽어들이는 예제 프로그램입니다
plugin.name: somePlugin
plugin.name: HelloWorldPlugin
plugin.name: AnotherPlugin
settings.type: hello world
감사합니다, 그래서 방법이 아닌 방법 플러그인 이름 앞에 "name ="이 없어도됩니까? – user1307957
고객 파서를 작성하지 않아도됩니다. –
알았어, 신경 쓰지 마. – user1307957