⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiple_sources.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
// Copyright Vladimir Prus 2002-2004.// Distributed under the Boost Software License, Version 1.0.// (See accompanying file LICENSE_1_0.txt// or copy at http://www.boost.org/LICENSE_1_0.txt)/* Shows how to use both command line and config file. */#include <boost/program_options.hpp>namespace po = boost::program_options;#include <iostream>#include <fstream>#include <iterator>using namespace std;// A helper function to simplify the main part.template<class T>ostream& operator<<(ostream& os, const vector<T>& v){    copy(v.begin(), v.end(), ostream_iterator<T>(cout, " "));     return os;}int main(int ac, char* av[]){    try {        int opt;            // Declare a group of options that will be         // allowed only on command line        po::options_description generic("Generic options");        generic.add_options()            ("version,v", "print version string")            ("help", "produce help message")                ;            // Declare a group of options that will be         // allowed both on command line and in        // config file        po::options_description config("Configuration");        config.add_options()            ("optimization", po::value<int>(&opt)->default_value(10),                   "optimization level")            ("include-path,I",                  po::value< vector<string> >()->composing(),                  "include path")            ;        // Hidden options, will be allowed both on command line and        // in config file, but will not be shown to the user.        po::options_description hidden("Hidden options");        hidden.add_options()            ("input-file", po::value< vector<string> >(), "input file")            ;                po::options_description cmdline_options;        cmdline_options.add(generic).add(config).add(hidden);        po::options_description config_file_options;        config_file_options.add(config).add(hidden);        po::options_description visible("Allowed options");        visible.add(generic).add(config);                po::positional_options_description p;        p.add("input-file", -1);                po::variables_map vm;        store(po::command_line_parser(ac, av).              options(cmdline_options).positional(p).run(), vm);        ifstream ifs("multiple_sources.cfg");        store(parse_config_file(ifs, config_file_options), vm);        notify(vm);            if (vm.count("help")) {            cout << visible << "\n";            return 0;        }        if (vm.count("version")) {            cout << "Multiple sources example, version 1.0\n";            return 0;        }        if (vm.count("include-path"))        {            cout << "Include paths are: "                  << vm["include-path"].as< vector<string> >() << "\n";        }        if (vm.count("input-file"))        {            cout << "Input files are: "                  << vm["input-file"].as< vector<string> >() << "\n";        }        cout << "Optimization level is " << opt << "\n";                    }    catch(exception& e)    {        cout << e.what() << "\n";        return 1;    }        return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -