Boost 库Program Options--第二篇

boost::program_options 用法详解 boost::program_options 用法详解boostprogram_options 用法详解 简介 主要组件 代码流程 示例一 示例二简介 program options是一系列pair<name,value>组成的选项列表,它允许程序通过命令行或配置文件来读取这些参数选项. 主要组件program_options的使用主要通过下面三个组件完成: 组件名 作用 option 阅读详情

程式執行參數處理函式庫:Boost Program Options(2/N)

前一篇已經大致解釋了 Boost Program Options 基本上的使用方法。而這一篇,則來細講一下選項描述(options_description)的進一步設定方法吧~

在上一篇裡,基本上是示範了兩種最簡單的方法:

bOptions.add_options()
  ( "help",    "Produce help message" )
  ( "vint",    BPO::value<int>(), "int value" );

其中,help 這個選項的設定,就是最單純、沒有任何對應值的選項,只需要加上說明文字就可以了。而如果像 vint 一樣,需要指定型別等進一步的資料的話,則就需要透過 value<>() 這個 template 函式,來產生一個型別為 typed_value<> 的物件,透過他來指定這個選項對應的值的性質。

最簡單的使用方法,就如同上面 vint 的範例一樣,只要指定型別就可以了。不過如果有需要的話,value<>() 這個函式(文件),和他產生的 typed_value<> 這個型別的物件(文件),都還有許多可以做進一步控制的功能~


直接將值寫入變數

像是以目前 vint 的設定來說,我們還需要自己去把他的值讀出來才行,其實算是有點麻煩的。實際上,Boost Program Options 是可以讓他自動把值寫到我們指定的變數裡的~要這樣做的方法也非常簡單,只要把要拿來儲存這個選項的值的變數的指標,當作 value<>() 這個函式的參數傳進去就可以了~

下面就是一個簡單的範例(註 1):

int main( int argc, char** argv )
{
  int iValInt = 0;
  // setup program options description
  BPO::options_description bOptions( "Test Options" );
  bOptions.add_options()
      ( "vint", BPO::value(&iValInt), "int value" );

  // parse program options
  BPO::variables_map mVMap;
  BPO::store( BPO::parse_command_line( argc, argv, bOptions ), mVMap );
  BPO::notify( mVMap );

  // output
  cout << "Value: " << iValInt << endl;
}

如此一來,當分析完輸入的資料後,如果有指定 vint 的值的話,他的值就會直接被寫到 iValInt裡,可以直接拿來用、而不需要再從 mVMap 裡面拿了~對於要使用的選項很多的時候,這樣是可以有效簡化程式碼的~


相同選項的多個值

像上面這樣的設定方法,基本上在命令提示字元時,只能指定一次 --vint 的值,如果超過一次的話,是會產生 exception 的。但是,如果希望可以指定複數個 vint 的值的話,應該要怎麼辦呢?Boost Program Options 也有針對這樣的需求,做額外的設計;最簡單的改法,就是把值的型別,從 int 改成 vector<int> 就可以了~下面就是一個簡單的範例:

int main( int argc, char** argv )
{
  vector<int> vValInt;

  // setup program options description
  BPO::options_description bOptions( "Test Options" );
  bOptions.add_options()
      ( "vint", BPO::value(&vValInt), "int value" );

  // parse program options
  BPO::variables_map mVMap;
  BPO::store( BPO::parse_command_line( argc, argv, bOptions ), mVMap );
  BPO::notify( mVMap );

  // output
  for( int i = 0; i < vValInt.size(); ++ i )
    cout << i << " -> " << vValInt[i] << endl;
}

其中,value(&vValInt) 是 value< vector<int> >(&vValInt) 的簡化寫法。

而這樣的程式,就可以接受有多個 --vint 了~下面就是一個簡單的使用範例:

C:\>text.exe --vint 1 --vint 2
0 -> 1
1 -> 2

但是,如果希望可以接受「-vint 1 2」這樣的指令的時候,該怎麼辦呢?這時候,可以透過typed_value<> 的函式、multitoken() 來做設定;他的設定方法如下:

bOptions.add_options()
    ( "vint", BPO::value(&vValInt)->multitoken(), "int value" );

這樣的話,執行「text.exe --vint 1 2」的結果就會和「text.exe --vint 1 --vint 2」一樣了~(註 2)


簡化輸入(縮寫)

在上面,選項的名稱在命令提示字元輸入的時候,都必須要加上「--」,而且要把完整的名稱打出來,在要輸入許多參數的時候,還滿麻煩的。而 Boost Program Options 為了可以簡化輸入,也有提供可以簡化的方法。

像上面的範例,可以在選項名稱「vint」後面加上逗號,然後再加上一個字元「I」,變成下面這樣:

bOptions.add_options()
    ( "vint,I", BPO::value(&vValInt), "int value" );

如此一來,在命令提示字元指定參數的時候,除了可以使用本來的「--vint」,也可以使用更短的「-I」來做輸入~這樣,就可以簡化輸入時要打的字了;這在要輸入的參數很多的時候,是很好用的。

下面就是一個簡單的使用範例:

C:\>test.exe --vint 1 -I 2 -I 3
0 -> 1
1 -> 2
2 -> 3

選項的預設值

有的時候,我們會希望某些選項,在使用者沒有指定值的情況下,會有一個預設值,這點在 Boost Program Options 裡面也是可以很簡單做到的~只需要使用 typed_value<> 提供的 default_value()這個函式,來指定預設值就可以了;下面就是簡單的使用範例:

int main( int argc, char** argv )
{
  int iValInt;

  // setup program options description
  BPO::options_description bOptions( "Test Options" );
  bOptions.add_options()
      ( "vint", BPO::value(&iValInt)->default_value(-1), "int value" );

  // parse program options
  BPO::variables_map mVMap;
  BPO::store( BPO::parse_command_line( argc, argv, bOptions ), mVMap );
  BPO::notify( mVMap );

  cout << iValInt << endl;
}

如此一來,在沒有透過 --vint 指定的值時候,iValInt 就會是 -1 了~

而另外一種狀況,則是有可能我們會希望可以只給選項、而不給值,這時候,則可以透過implicit_value() 這個函示來做設定。它的使用方法如下:

bOptions.add_options()
    ( "vint", BPO::value(&iValInt)->implicit_value(1), "int value" );

如此一來,除了可以透過「--vint 10」這樣的參數,把 iValInt 的值設定為 10 之外,也可以只給「--vint」這樣的參數,讓 iValInt 的值變成 1。

而當然,default_value() 和 implicit_value() 也是可以合併使用的!比如說,如果設定成:

bOptions.add_options()
  ( "vint", BPO::value(&iValInt)->default_value(0)->implicit_value(1), 
    "int value" );

在不做特別指定的情況下,iValInt 的值會就會預設值的 0,而如果只有給「--vint」的話,則會是 implicit value 的 1。下面就是這樣的使用範例:

C:\>test.exe
0

C:\>test.exe --vint
1

C:\>test.exe --vint 2
2

在很多時候,這樣的設定方法是相當方便的~


必要選項

如果某個選項,是要求使用者一定要指定的,也可以透過 typed_value<> 的 required() 這個函式,來要求在分析的時候,一定要有這個選項;而如果指定成必要的選項在分析的時候沒有被找到的話,則是會在執行階段丟出一個 exception,沒有特別處理的話,程式是會直接結束的。

下面就是一個簡單的範例:

int main( int argc, char** argv )
{
  int iValInt;

  // setup program options description
  BPO::options_description bOptions( "Test Options" );
  bOptions.add_options()
      ( "vint", BPO::value(&iValInt)->required(), "int value" );

  // parse program options
  BPO::variables_map mVMap;
  try
  {
    BPO::store( BPO::parse_command_line( argc, argv, bOptions ), mVMap );
    BPO::notify( mVMap );
  }
  catch( BPO::error_with_option_name e )
  {
    cerr << e.what() << endl;
    return -1;
  }

  cout << iValInt << endl;
}

這樣一來,在沒有給「--vint」的情況下執行這個程式,就會因為接到 error_with_option_name 這個 exception(註 3),而讓程式結束了~

C:\>test.exe
the option '--vint' is required but missing

C:\>test.exe --vint 1
1

不過由於個人在使用上是習慣透過「--help」來讓程式輸出選項的描述,所以和這邊這種 required()的使用方法算是有衝突的,所以大概不會用吧…


自訂型別

大部分時候,會拿來當作選項的值,所使用的型別都是相對簡單的,一般來說都會 C++ 內建的型別。不過,如果有需要使用自己定義的型別當作選項的值的型別的話,也是沒問題的~唯一的需求,就是必須要針對這個字定義的型別,定義好他的「extraction operator」,也就是 input stream 的 operator>>。(參考)

下面就是一個字定義的 2D 向量結構、SVector 的範例。

      
struct SVector { int x; int y; };
istream & operator>> ( istream & in , SVector & vec ) { in >> skipws >> vec .x >> vec .y; return in ; }
int main( int argc, char** argv ) { SVector vec; // setup program options description BPO::options_description bOptions( "Test Options" ); bOptions.add_options() ( "vec", BPO::value<SVector>( &vec ), "a 2D vector" ); // parse program options BPO::variables_map mVMap; BPO::store( BPO::parse_command_line( argc, argv, bOptions ), mVMap ); BPO::notify( mVMap ); cout << vec.x << ", " << vec.y << endl; }

在這邊,Boost Program Options 在偵測到 --vec 的選項的時候,會透過 input stream 的形式,把輸入的值轉換成指定的型別、也就是 SVector。而下面則是一個簡單的使用範例:

C:\>test.exe --vec "3 2"
3, 2

在這邊給了 --vec "3 2" 這個執行參數後,Boost Program Options 就會自動把 vec 的 x 和 y 的值填進去了~這也算是 C++ iostream 可擴充性的一個很好的利用範例了~

不過要注意的是,由於 C++ 會用空格把命令提示字元的參數做切割,所以像這邊「"3 2"」因為中間有空白,所以就需要使用「"」來把他包起來,不然是會被視為兩個項目、而造成程式的錯誤的。


Nofitier

在 Boost Program Options 的架構裡,在根據 options_description 分析完輸入的來源、把資料寫到 variables_map 後,還需要呼叫 notify() 這個函式、執行「通知」這個動作。而這個通知的動作要做那些事呢?實際上是可以自己定義的;透過 typed_value<> 的 notifier() 這個函式,我們可以指定再呼叫 notify() 的時候,如果這個選項存在、要做那些事。

而使用的方法也很簡單,只要丟一個函式給他就可以了~下面就是一個簡單的範例:

      
void test( const int & rVal ) { cout << "Notified: " << rVal << endl; }
int main( int argc, char** argv ) { // setup program options description BPO::options_description bOptions( "Test Options" ); bOptions.add_options() ( "vint", BPO::value<int>()->notifier( test ), "int value" ); // parse program options BPO::variables_map mVMap; BPO::store( BPO::parse_command_line( argc, argv, bOptions ), mVMap ); BPO::notify( mVMap ); }

這邊就是很簡單,把 test() 這個函式當作參數,傳給 notifier() 就可以了。在這樣設定後,當呼叫BPO::notify( mVMap ) 的時候,如果有偵測到 vint 這個選項的話,他就會呼叫 test() 這個函式,並且把偵測到的值傳進去。

實際上,notifier() 接受的參數是 Boost 裡、型別是 function1<void, const T&> 的 function object(註 4),所以只要是符合形式(沒有回傳值、接受一個 const reference 的值)、可以呼叫的物件,都可以傳進來;像是 C++11 的 lambda expression(參考),也是可以拿來用的~

如果在程式裡面,針對格別選項的處理流程很複雜的話,使用 Boost Program Options 的 notify 機制,應該也是一個把程式模組成一塊一塊的好方法。


變數名稱

實際上,typed_value<> 還有提供一些其他的功能,可以使用。不過有的 Heresy 是先跳過了。而在這篇,最後來講一個主要影響是顯示上的功能,那就是「變數名稱」。

Boost Program Options 在 Heresy 來看,其中一個最重要的好處,就是在完成options_description 的設定的同時,也就把給使用者看得使用說明的資料完成了!比如像下面的設定了一個 options_description:

BPO::options_description bOptions( "Test Options" );
bOptions.add_options()
    ( "help", "Help message" )
    ( "vint", BPO::value<int>()->default_value(1), "a int value" )
    ( "vec",  BPO::value<SVector>( &vec ), "a 2D vector" );

如果我們透過 output stream 把 bOptions 輸出,就可以得到下面的說明:

Test Options:
  --help                Help message
  --vint arg (=1)       a int value
  --vec arg             a 2D vector

這真的是相當方便的~因為如此一來,就可以避免使用說明和實際參數的不一致了!(分開寫常常會忘了改 :p)

但是,不知道有沒有發現,在上面的說明裡,提示要輸入的變數,都是「arg」,看不出來是怎樣類型的資料,其實算是比較美中不足的地方。

不過實際上,Boost Program Options 也是有針對這個問題做處理的!只要透過 typed_value<> 的value_name() 這個函式,就可以把「arg」這個通用性的字串改掉,改成我們自己要的內容了~比如說,把上面的程式碼改成下面的:

bOptions.add_options()
  ( "help", "Help message" )
  ( "vint", BPO::value<int>()->default_value(1)->value_name( "0~9" ), 
            "a int value" )
  ( "vec",  BPO::value<SVector>( &vec )->value_name( "\"x y\""), 
            "a 2D vector" );

那在輸出的時候,就會變成:

Test Options:
  --help                Help message
  --vint 0~9 (=1)       a int value
  --vec "x y"           a 2D vector

可以看到,本來的 arg 就已經變成上面指定的值了~如此一來,在說明的部分,就可以更有效地說明如何使用了。


附註:

  1. 實際上這邊的 value(&iValInt) 算是 value<int>(&iValInt) 的簡化寫法;因為型別 int 已經可以透過 iValInt 判斷出來,所以就不需要特別寫出來了。

  2. 官方文件(連結)裡的 multitoken() 並沒有使用 vectot<> 當作型別,但是 Heresy 測試這樣是有問題的…

  3. Boost Program Options 有定義許多不同的錯誤狀態,可以參考 errors.hpp 這個檔案(官方文件);而根據不同的錯誤、會丟出不同的類型的 exception 物件,如果要處理得好的話,要個別處理。基本上,個人是覺得使用上還滿麻煩的,之後有機會會再補上這邊的資料。

  4. 內部應該是定義成 STL 的 unary_function。



    原帖:http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=1&PAPER_ID=362

Paypal开发者中心获取“ClientId”和“ClientSecret”参数 正式环境设置 1、登录到 paypal开发者中心 网址:https://developer.paypal.com/developer/ 点击右上角登录按钮登录 2、左侧栏 - 我的应用程序和凭证 - 点击“创建新应用” 新注册的paypal账号,需要进行邮箱验证,验证通过后,需要等待一段时间(或重新登录),才会出现相关设置项位置 验证邮箱通过后,点击创建新应用 3、按提示填写,保存创建应用 4、点击刚创建的应用进入应用详情页 5、应用详情页获得网站开发人员所需要的“ClientId”和“Client 阅读详情

相关推荐

WPS用户看过来:避开格式错乱坑,用WPS Office完美制作红头文件(2024最新版)

本文详细解析了WPS Office与Word在红头文件制作中的核心差异,提供了2024年最新版的零误差实战指南。从字体处理、页面布局到红头制作关键步骤,帮助用户避开格式错乱坑,确保跨设备显示一致。特别针对WPS用户优化,解决字体丢失、版式错位等常见问题。

weixin_26800111的博客 214

boost 接受多参数列表

boost 接受多参数列表 #include <boost/program_options.hpp> using namespace boost::program_options; using namespace std; int main(){ options_description desc("Allowed options"); desc.add_options() ("files,f", value< std::vector< std::string

leiweip的博客 295

酒店前台pms管理系统

对于酒店经营者来说,选择一款优秀的管理系统,是提升运营效率、优化客人体验的关键。PMS酒店管理系统凭借其强大的房态管理、实时数据监控、OTA直联、无人值守等功能,已经成为许多酒店提升管理水平的得力助手。无论是大中型酒店,还是小型民宿,PMS系统都能根据不同需求提供量身定制的解决方案,帮助酒店实现精细化管理、提高运营效率。如果你也在为酒店管理中的繁琐琐事而困扰,不妨尝试一下PMS酒店管理系统,感受科技带来的便利与高效,让你的酒店运营更上一层楼!

2409_89897808的博客 2482

深入浅出boost::program_options ,命令行或配置文件读取参数选项

boost::program_options 用法详解简介Boost 是一个有着高质量、高性能、高可靠性的 C++工具库,地位仅次于 C++ 的标准库。是否掌握 Boost 已经成为很多优秀公司面试 C++工程师的基本要求。Boost.Program_options 在实际的开发应用中使用广泛。本次课程将通过实例系统讲解 如何使用 Boost.Program_options 解析参数,环境变量以及...

卢克治-BJTU-NLP-的博客 1523

Camera ITS测试

一、手机端设置: 将 CtsVerifier.apk 安装到设备上, 连接上linux主机。 二、主机端设置: 基础:CTS测试运行环境 然后,主机安装python2.7,及numpy/scipy/matplotlib/opencv 栈和 python 成像库。按照下面的命令依次安装: sudo apt­-get install python-­numpy sudo apt-­g...

wangubuntu的专栏 7783

从0开始部署基础的AlwaysOn

在这个快餐文化盛行的时代,应该没多少人真的会沉下心来看理论和具体步骤,加上我自己也需要一篇可以扩展的快速搭建环境的指引,所以特别写了这篇文章。 我们在这里要做的事情有以下几个:安装环境。包括虚拟机和网络配置等。安装Windows域、配置必要的账号密码及功能。搭建域环境并进行配置。安装配置Windows Server Failover Cluster(WSFC)。安装SQL Server。配置Alw

MVP黄钊吉(發糞塗牆) 7567

别再只盯着代码了:用MATLAB仿真带你直观理解Tx IQ失配的‘镜像幽灵’

本文通过MATLAB仿真深入解析Tx IQ失配现象,揭示频谱中‘镜像幽灵’的产生机制。从理想信号建模到可控失配参数引入,详细演示了幅度与相位失配对频谱的影响,并提供参数扫描实验和调校指南,帮助工程师直观理解并解决IQ失配问题。

weixin_30715523的博客 465

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

boost 分析命令行参数

#include #include #include using namespace std; using namespace boost::program_options; int main(int argc, char* argv[]) { string one ; // 外部变量 存储 参数one的值 vector mult; boost::program_options

苦逼码农 4740

华为OD机考双机位C卷 - 天然蓄水库(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 天然蓄水库(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1740

即插即用系列(代码实践) | CVPR 2025 WPFormer:小波与原型增强Transformer——表面缺陷检测SOTA,专治弱缺陷与杂乱背景

摘要:本文提出了一种基于小波变换和原型增强的Transformer模型(WPFormer),用于像素级表面缺陷检测。该模型针对工业场景中微弱缺陷难以识别和杂乱背景干扰严重的问题,创新性地将小波变换引入Transformer的注意力机制,通过频域信息分离噪声与边缘特征,同时利用原型向量引导查询,实现了更精准的缺陷定位。核心模块包括小波增强交叉注意力(WCA)和原型引导交叉注意力(PCA),适用于工业缺陷检测、伪装目标检测和医学图像分割等任务。代码已开源,支持即插即用集成到现有框架中。

分享顶会顶刊论文即插即用模块 299

boost库中的program_options

本文基本从官方文档中摘录出来的,便于查看。 官方文档:https://www.boost.org/doc/libs/1_57_0/doc/html/program_options.html Github:https://github.com/boostorg/program_options.git 简介 boost库时c++常用的工具库,地位仅次于c++标准库,Boost库的掌握是C++工程师的基...

无名小卒 1349

解读MTF曲线

怎样看MTF曲线 光学模量传递函数所表示的就是模量传递函数值随空间频率和像场位置变化的函数关系。它有很多种类型, 但最主要的两种类型就是MTF值与空间频率的关系和与像场半径(或像场角)之间的关系。 1、什么是空间频率 在讲清MTF曲线随空间频率的变化关系以前,我们先来弄明白什么叫“空间频率”。 空间频率(Spatial Frequency)的概念与分辨率的概念非常相似,单位都是“线对/毫米”(lp/mm)。但测试分辨率的标板是一组一组轮廓鲜明的黑白线条,每两条线条之间的距离,以及线条本身的宽度之比是.

camerall 1万+

boost库中的 program_options

1、阅读rviz中的源码时在rviz/visualizer_app.cpp中遇到如下代码:    po::options_description options; options.add_options() ("help,h", "Produce this help message") ("splash-screen,s", po::value<...

weixin_30315435的博客 364

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Boost库之program_options的使用

我们在编写程序时,有时需要解析命令行参数,比如小蜜蜂调用聊天历史记录程序,监视器调用日志管理程序等。遗憾的是,C++标准库并没有提供解析命令行参数的功能,我们必须自己来完成解析工作。如果命令行参数比较复杂,要正确地解析可能并不是一件容易的事情。即使解析正确了,代码也不一定具有通用性。那么,有没有一个封装好的功能强大而且简单易用的命令行解析类呢?答案是Boost库的program_options。

1563

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++ boost::program_options的使用

c++ 解析参数选项的方法,使用boost::program_options库 /* compile command at linux: g++ test9_program_options.cpp -o t9 -lboost_program_options */ #include <boost/program_options.hpp> #include <boost/algo...

photon222的博客 633

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

boost::program_options学习总结

简介 Boost C++ 库(Libraries)是一组扩展C++功能的经过同行评审(Peer-reviewed)且开放源码程序库。大多数的函数为了能够以开放源码、封闭项目的方式运作,而许可于Boost软件许可协议(Boost Software License)之下。许多Boost的开发人员是来自C++标准委员会,而部分的Boost库成为C++的TR1标准之一。 boost::program_options提供了一种很方便的命令行接口,可以简化人机交互的流程。使用该库文件中提供的方法,可以方便的通过交互界面

weixin_44401286的博客 1488

boost库之program_options

#include <boost/program_options.hpp> #include <iostream> using namespace std; // 解析命令参数 bool parseCommandLine(int argc, char* argv[]) { namespace po = boost::program_options; po:...

不才的专栏 482

boost库学习③:program_options

program options是一系列pair<name,value>组成的选项列表,它允许程序通过命令行或配置文件来读取这些参数选项. program_options的使用主要通过下面三个组件完成: 代码流程总览 示例 #include <iostream> #include <boost/program_options....

辉哥仔 1158

boost--program_options 用法详解

简介 program options是一系列pair组成的选项列表,它允许程序通过命令行或配置文件来读取这些参数选项. 主要组件 program_options的使用主要通过下面三个组件完成: 组件名 作用 options_description(选项描述器) 描述当前的程序定义了哪些选项 parse_command_line(选项分析器) 解析由命令行输入的参数 va...

线上幽灵 2487

boost:program_options

由于系统库getopt和getopt_long用起来不够直观,仔细看了下boost发现Boost.Program_options可以满足我的需求,它和getopt系列函数一样,可以抓起命令行参数,这里写下我对Boost.Program_options的理解。 一、getopt的不足 使用过了getopt函数后,我感觉它不足的地方(可能是我没研究明白的问题),我觉得getopt系列函...

bacanpi5506的博客 186

Boost之program_options

Boost库中的program_options模块提供了一种便捷的方式来处理命令行参数和配置文件选项。该模块主要通过三个核心组件实现:options_description用于定义程序支持的选项,parse_command_line用于解析命令行参数,variables_map则用于存储解析后的选项值。典型使用流程包括:定义选项、解析参数、存储选项值,并通过count()检查选项是否存在,operator[]获取选项值。示例代码展示了如何定义help和compression选项,并处理用户输入。该模块还支持

赤龙绕月的专栏 453

boost::program_options 命令行选项 子命令

http://www.boost.org/doc/libs/1_55_0/doc/html/program_options.html http://www.radmangames.com/programming/how-to-use-boost-program_options

qjklw 1648
上一篇: boost:库program_options--第一篇
下一篇: log4cxx入门第一篇--一个小例子
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值