- 浏览: 768548 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
#include <boost/program_options.hpp>
#include <string.h>
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
using namespace boost;
namespace bpo = boost::program_options;
/*
config.ini:
p2p-endpoint = 0.0.0.1:31010
rpc-endpoint = 0.0.0.0:38090
*/
int main(int argc,char** argv)
{
cout << "cmd line:" << endl;
bpo::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("df_value", bpo::value<string>()->default_value("123"), ""); //give default
bpo::variables_map cmdValueMap;
bpo::store(bpo::parse_command_line(argc, argv, desc), cmdValueMap);
bpo::notify(cmdValueMap);
if(cmdValueMap.count("help")){
cout<<desc<<endl;
}
if(cmdValueMap.count("df_value")){
cout << "df_value:" << cmdValueMap["df_value"].as<string>() << endl;
}
cout << endl;
cout << "直接读取文件配置:" << endl;
boost::program_options::options_description options("Graphene Witness Node");
bpo::variables_map fileValueMap;
options.add_options()
("p2p-endpoint", bpo::value<string>(), "Endpoint for P2P node to listen on")
("rpc-endpoint", bpo::value<string>(),"aaa")
("genesis-json", bpo::value<string>()->default_value("my-genesis.json"),"genesis-json");
bool useIfStream = true;//both is ok
if(useIfStream)
{
ifstream ifs("config.ini");
boost::program_options::store(boost::program_options::parse_config_file(ifs,options), fileValueMap);
}else
{
boost::program_options::store(boost::program_options::parse_config_file<char>("config.ini",options, true), fileValueMap);
}
boost::program_options::notify(fileValueMap);
if(fileValueMap.count("p2p-endpoint")){
cout << fileValueMap["p2p-endpoint"].as<string>() << endl;
}
if(fileValueMap.count("rpc-endpoint")){
cout << fileValueMap["rpc-endpoint"].as<string>() << endl;
}
if(fileValueMap.count("genesis-json")){
cout << fileValueMap["genesis-json"].as<string>() << endl;
}
cout << endl;
cout << "遍历valueMap:" << endl;
for(bpo::variables_map::iterator iter = fileValueMap.begin(); iter != fileValueMap.end(); ++iter){
cout << iter->first << ":" << iter->second.as<string>() << endl;
}
}
执行:./a.out --help
cmd line:
Allowed options:
--help produce help message
--df_value arg (=123)
df_value:123
直接读取文件配置:
0.0.0.1:31010
0.0.0.0:38090
my-genesis.json
遍历valueMap:
genesis-json:my-genesis.json
p2p-endpoint:0.0.0.1:31010
rpc-endpoint:0.0.0.0:38090
#include <string.h>
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
using namespace boost;
namespace bpo = boost::program_options;
/*
config.ini:
p2p-endpoint = 0.0.0.1:31010
rpc-endpoint = 0.0.0.0:38090
*/
int main(int argc,char** argv)
{
cout << "cmd line:" << endl;
bpo::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("df_value", bpo::value<string>()->default_value("123"), ""); //give default
bpo::variables_map cmdValueMap;
bpo::store(bpo::parse_command_line(argc, argv, desc), cmdValueMap);
bpo::notify(cmdValueMap);
if(cmdValueMap.count("help")){
cout<<desc<<endl;
}
if(cmdValueMap.count("df_value")){
cout << "df_value:" << cmdValueMap["df_value"].as<string>() << endl;
}
cout << endl;
cout << "直接读取文件配置:" << endl;
boost::program_options::options_description options("Graphene Witness Node");
bpo::variables_map fileValueMap;
options.add_options()
("p2p-endpoint", bpo::value<string>(), "Endpoint for P2P node to listen on")
("rpc-endpoint", bpo::value<string>(),"aaa")
("genesis-json", bpo::value<string>()->default_value("my-genesis.json"),"genesis-json");
bool useIfStream = true;//both is ok
if(useIfStream)
{
ifstream ifs("config.ini");
boost::program_options::store(boost::program_options::parse_config_file(ifs,options), fileValueMap);
}else
{
boost::program_options::store(boost::program_options::parse_config_file<char>("config.ini",options, true), fileValueMap);
}
boost::program_options::notify(fileValueMap);
if(fileValueMap.count("p2p-endpoint")){
cout << fileValueMap["p2p-endpoint"].as<string>() << endl;
}
if(fileValueMap.count("rpc-endpoint")){
cout << fileValueMap["rpc-endpoint"].as<string>() << endl;
}
if(fileValueMap.count("genesis-json")){
cout << fileValueMap["genesis-json"].as<string>() << endl;
}
cout << endl;
cout << "遍历valueMap:" << endl;
for(bpo::variables_map::iterator iter = fileValueMap.begin(); iter != fileValueMap.end(); ++iter){
cout << iter->first << ":" << iter->second.as<string>() << endl;
}
}
执行:./a.out --help
cmd line:
Allowed options:
--help produce help message
--df_value arg (=123)
df_value:123
直接读取文件配置:
0.0.0.1:31010
0.0.0.0:38090
my-genesis.json
遍历valueMap:
genesis-json:my-genesis.json
p2p-endpoint:0.0.0.1:31010
rpc-endpoint:0.0.0.0:38090
发表评论
-
multi_index_container
2018-08-11 13:04 462根据不同的类中不同的字段排序 #include < ... -
centos下boost安装
2014-03-27 09:28 1069./booststarp.sh //这里的一些错误不用管 ... -
GC的改良
2013-10-17 22:05 582分代回收:对分配不久,诞生时间较短的“年龄”对象进行重点扫描, ... -
GC与引用记数
2013-10-16 21:57 702根(Root)就是判断对象是否可被引用的起始点。至于哪里才是根 ... -
boost 信号槽
2011-06-08 23:43 2327#include<boost/signals2.hp ... -
boost bind
2011-06-07 15:28 1691bind并不是一个单独的类或函数,而是非常庞大的家族,依据绑定 ... -
boost reference_wrapper
2011-06-05 21:07 1568reference_wrapper是一个引用类型的包装器 ... -
元编程
2011-06-02 22:46 935元编程的最大特点在于:某些用户自定义的计算可以在程序翻译期进行 ... -
参数化虚拟性
2011-06-02 22:17 868#include<iostream> usi ... -
boost any与variant
2011-05-31 15:55 2434any:是一种只能容纳一个元素的容器,但这个元素可以是任意类型 ... -
traits
2011-05-30 16:43 794#include<iostream> usi ... -
动静多态
2011-05-30 15:40 1070由于继承||虚函数在运行期进程处理,这种多态叫动多态。 模板允 ... -
局部特化
2011-05-29 16:27 1036局部特化并不会引入一个新的模板,它只对原来模板(基本模板)进行 ... -
类模板与模板类
2011-05-29 16:08 7101.类模板:该类是一个模板,他代表的是:整个类家族的参数化描述 ... -
boost tuple
2011-05-27 15:03 1091tuple(元组):定义了一个有固定数目元素的容器,其中的每个 ... -
boost array
2011-05-27 00:06 934array本质上是一个对静态数组的包装,没有构造函数,不能指定 ... -
单元测试
2011-05-23 22:00 893test库提供了一个最小化的测试套件minimal test. ... -
boost StaticAssert
2011-05-23 21:42 941static_assert库把断言的诊断时刻由运行期提前到编译 ... -
boost正则表达式
2011-05-17 23:10 2803xpressive是boost的正则表达式库,它比boost. ... -
为什么模板要写在.h里面
2011-05-13 18:02 1113//test.h template<typena ...
相关推荐
其中一个重要的模块是`program_options`,它允许程序员轻松地处理命令行参数和配置文件选项。这个模块尤其适用于创建具有灵活用户界面的命令行应用程序,使得用户能够自定义程序的行为。 `program_options`模块的...
程序选项是,它允许通过常规方法(例如命令行和配置文件)从用户定义和获取(名称,值)对。 它与getopt_long大致相似,但可用于C ++。 执照 根据分发。 特性 C ++ 03 需要链接 建置状态 (进行中...) 分支 ...
`boost::program_options`提供了一种方便的方式来解析命令行参数和读取配置文件。它支持基本类型如整数、浮点数和字符串,以及自定义类型的选项。在C++代码中,你需要先声明你要解析的选项,然后在解析参数时,库会...
例如,一个命令行工具可能会有一个`-v`或`--verbose`选项来开启详细输出,一个`-f`或`--file`选项来指定配置文件路径。 总的来说,通过理解命令行参数的处理,开发者可以创建灵活且可定制的程序。在“哈密顿回路....
执行程序时,经常会用到命令行参数传递参数这种方式,今天实战一个命令行参数的从头到尾。 博文虽长,但均为干货。...program options是一系列pair组成的选项列表,它允许程序通过命令行或配置文件来读取这些参
- **使用Selenium创建Firefox配置文件**:可以通过Selenium WebDriver API来创建和管理Firefox配置文件,这样可以在测试脚本中动态地更改浏览器设置。 - **Java示例代码**:下面是一个简单的示例,展示了如何使用...
5. **Boost.Program_options**:帮助解析命令行参数,使得程序更加灵活和易于配置。 6. **Boost.Date_Time**:提供日期和时间处理功能,支持多种格式的日期时间表示和转换。 #### 四、Boost库的安装与配置 1. **...
该命令将同步 `C:\Windows` 和 `C:\Program Files` 目录下的文件到 `D:\BackupFolder` 目录,并且在复制完成后自动关闭FastCopy窗口,同时显示复制过程的信息。 通过上述详细介绍,我们可以看出FastCopy提供了非常...
本文详细介绍了如何利用命令行工具(如`RegFind`和`reg`命令)来高效地操作Windows注册表。通过这些工具,用户可以在不依赖图形界面的情况下对注册表进行精确控制,这对于系统管理员或开发人员来说尤其有价值。掌握...
7. **程序选项解析**:Boost.Program_Options库帮助解析命令行参数和配置文件。 8. **序列化**:Boost.Serialization库可以将对象序列化为文件或流,便于存储和恢复。 9. **信号和槽**:Boost.Signals库实现了类似Qt...
7. **程序工具库**:Boost.Program_options提供了命令行参数和配置文件解析功能,使应用程序的配置更加灵活。 8. **数学和统计库**:Boost.Math包含了一些数学函数和统计工具,如特殊函数、随机数生成等,为科学...
2. 配置Apache:编辑Apache的配置文件httpd.conf,确保已启用对`.cgi`文件的支持。添加以下内容到配置文件: ``` ScriptAlias /bugzilla/ "C:/Bugzilla/" Options +ExecCGI -Indexes AllowOverride All ...
该文件中,`main()`函数扮演着中心角色,它初始化全局变量`gndo`,一个`struct netdissect_options`类型的结构体,用于存储用户指定的选项标志与配置参数。 #### 二、`struct netdissect_options`解析 `struct ...
在本教程中,我们将探讨如何在 ASP.NET Core 6 的 `Program.cs` 文件中读取和使用 `appsettings.json` 配置文件。 首先,确保你的项目已经引用了必要的 NuGet 包,这些包包括: 1. `Microsoft.Extensions....
8. boost_program_options-vc120-mt-1_56.dll:处理命令行参数和配置文件的选项,可能用于MATLAB的脚本或应用程序接口。 9. boost_graph-vc120-mt-1_56.dll:图论相关的算法库,对于处理复杂网络结构很有帮助。 10. ...
12. **程序工具库**:Boost.Program_options库用于解析命令行选项和配置文件,使得程序的参数设置更加人性化。 13. **测试库**:Boost.Test库提供了完善的单元测试框架,便于编写和组织测试代码,确保软件质量。 ...
在实际应用中,`CmdLine`可能使用了现成的库,如Boost.Program_options或者GNU Getopt,或者自定义了一个解析器来处理命令行参数。这样的设计使得程序可以根据用户的需求进行定制,提高了程序的可扩展性和易用性。 ...
8. Boost.Program_options:处理命令行参数解析,帮助开发者轻松地从命令行中获取配置选项。 9. Boost.Test:一个强大的单元测试框架,用于编写和运行C++代码的测试用例,确保代码质量。 10. Boost.Random:生成...
6. **Boost.Program_options**: 解析命令行选项和配置文件,使得程序更加灵活可配置。 7. **Boost.Python**: 使C++代码能与Python无缝交互,方便构建混合语言项目。 8. **Boost.Regex**: 提供正则表达式操作的库,...