Boost提供了實用程序來有效處理參數。
因此,正如其他答案指出的那樣,您可以將此答案中提供的整個函數體移到您的新函數中,並從main()傳遞「argc」和「argv」到你的新功能。
int
main(int argc, char *argv[])
{
namespace po = boost::program_options;
po::options_description desc("Usage: describe usage here [OPTIONS]");
desc.add_options()
("help", "Print usage")
("list,l", po::value<std::string>(), "dummy command taking a value")
;
po::variables_map vm;
try
{
po::store(po::parse_command_line(argc, argv, desc), vm);
if (vm.count("help"))
{
std::cout << desc << std::endl;
return 0;
}
if (vm.count("list"))
{
std::cout << "Dummy command entered" << std::endl;
return 0;
}
po::notify(vm);
}
catch (po::error& e)
{
std::cerr << "Error: " << e.what() << std::endl;
std::cerr << desc << std::endl;
return 1;
}
}
編譯&樣品OP:
g++ -std=c++11 -Iboost_root/boost -Lboost_root/boost/stage/lib/ Options.cpp -l boost_program_options
./a.out --list dummy_value
Dummy command entered
如果你想要寫一個方法,但你甚至不知道如何傳遞參數...也許,你應該花了幾個小時的教育你自己關於你最喜歡的語言的絕對初學者基礎知識。這並不意味着侮辱,但在進行下一步之前,你應該對最重要的概念有所瞭解。 – GhostCat
@Jägermeister感謝您的評論。 :) – AwaitedOne
[main()]之外的[C++進程argc argv]的可能重複(http://stackoverflow.com/questions/12862798/c-process-argc-argv-outside-of-main) – gdlmx