C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 解析位置参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
虑从boost程序选项 examples中采用的以下琐碎程序
#include <boost/program_options.hpp>
#include <boost/version.hpp>

#include <iostream>

int
main( int argc,char** argv )
{
    namespace po = boost::program_options;

    po::options_description desc("Options");

    unsigned foo;
    desc.add_options()
        ("Help,h","produce Help message")
        ("foo",po::value(&foo),"set foo") 
        ;

    po::variables_map vm;
    try {
        po::store(
                po::parse_command_line( argc,argv,desc ),vm
                );
        po::notify( vm );

        if ( vm.count("Help") ) {
            std::cout << desc << "\n";
            std::cout << "boost version: " << BOOST_LIB_VERSION << std::endl;
        }
    } catch ( const boost::program_options::error& e ) {
        std::cerr << e.what() << std::endl;
    }
}

以下行为如预期:

sAMM$./a.out -h
Options:
  -h [ --Help ]         produce Help message
  --foo arg             set foo

boost version: 1_44
sAMM$./a.out --Help
Options:
  -h [ --Help ]         produce Help message
  --foo arg             set foo

boost version: 1_44
sAMM$./a.out --foo 1
sAMM$./a.out --asdf
unkNown option asdf
sAMM$

但是,当引入一个位置论证时,我感到非常惊讶,没有被标记错误

sAMM$./a.out foo bar baz
sAMM$

为什么boost :: program_options :: too_many_positional_options_error异常不会抛出?

解决方法

当我明确指出不支持位置选项:
const po::positional_options_description p; // note empty positional options
    po::store(
            po::command_line_parser( argc,argv).
                      options( desc ).
                      positional( p ).
                      run(),vm
                      );

我得到预期的行为:

sAMM$./a.out asdf foo bar
too many positional options
sAMM$

大佬总结

以上是大佬教程为你收集整理的c – 解析位置参数全部内容,希望文章能够帮你解决c – 解析位置参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。