【问题标题】:How do I use boost options_description with hexadecimal input?如何将 boost options_description 与十六进制输入一起使用?
【发布时间】:2010-04-30 09:11:14
【问题描述】:

我想让程序有两个选项,开始地址和结束地址,这样程序选项如下:

--start_address 0xc0000000 --end_address 0xffffffff

options_description 可以采用这种十六进制输入吗?我是否必须将输入视为字符串并将它们转换为十六进制值。我现在有这个:

  po::options_description desc("Allowed options");

  desc.add_options()
    ("help,h", "display this help message")
    ("path,p", po::value<std::string>(), "Executable file path")
    ("start_address,s", po::value<std::string>(), "Start address")
    ("end_address,e", po::value<std::string>(), "End address")
    ;

boost::lexical_cast可以做这样的转换吗?

【问题讨论】:

    标签: c++ boost boost-program-options


    【解决方案1】:

    好的。刚刚发现我可以使用 options_description 输入选项,然后使用 std::stringstream 解析选项以转换为十六进制数,如下所示

      boost::uint32_t start_address;
      std::stringstream interpreter;
    
      interpreter << std::hex << vm["start_address"].as<std::string>();
    
      interpreter >> start_address;
    

    【讨论】:

    • ...但是当您尝试让默认解析发生时,您如何处理发生的异常?
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 2014-03-19
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2017-08-22
    • 2016-05-04
    相关资源
    最近更新 更多