草庐IT

ZN5boost

全部标签

c++ - 如何使用 Boost.Program_options 实现子命令?

我想在我的程序中实现子命令。我还需要能够为不同的子命令提供不同的参数选项。使用Boost.Program_options执行此操作的最佳方法是什么?子命令用于svn、git和apt-get等程序。例如,在GIT中,一些可用的子命令是:gitstatusgitpushgitaddgitpull我的问题和这个人的基本一样:http://boost.2283326.n4.nabble.com/subcommands-with-program-options-like-svn-command-td2585537.html 最佳答案 如果我对

c++ - 如何使用 Boost.Program_options 实现子命令?

我想在我的程序中实现子命令。我还需要能够为不同的子命令提供不同的参数选项。使用Boost.Program_options执行此操作的最佳方法是什么?子命令用于svn、git和apt-get等程序。例如,在GIT中,一些可用的子命令是:gitstatusgitpushgitaddgitpull我的问题和这个人的基本一样:http://boost.2283326.n4.nabble.com/subcommands-with-program-options-like-svn-command-td2585537.html 最佳答案 如果我对

c++ - 使用 Boost 序列化和反序列化 JSON

我是C++的新手。使用boost对std::Map类型的数据进行序列化和反序列化的最简单方法是什么。我发现了一些使用PropertyTree的例子,但它们对我来说是模糊的。 最佳答案 请注意,property_tree将键解释为路径,例如放置“a.b”=“z”对将创建一个{"a":{"b":"z"}}JSON,而不是{"a.b":"z"}。否则,使用property_tree是微不足道的。这是一个小例子。#include#include#include#includeusingboost::property_tree::ptree;

c++ - 我应该从使用 boost::shared_ptr 切换到 std::shared_ptr 吗?

我想通过-std=c++0x在GCC中启用对C++0x的支持。我不一定需要任何currentlysupportedC++11features在GCC4.5(很快4.6)中,但我想开始习惯它们。例如,在我使用迭代器的一些地方,auto类型会很有用。但同样,我不需要任何当前支持的功能。这里的目标是鼓励我将新标准的特性纳入我的编程“词汇表”。根据您对C++11支持的了解,在GCC中启用它是一个好主意,然后通过例如从使用boost::shared_ptr切换到std::shared_ptr因为两者不混合?PS:我知道thisgoodquestion它比较了shared_ptr的不同风格,但我要

c++ - boost::variant 和 boost::any 如何工作?

Boost库中的变体和任何变体如何在内部工作?在我正在进行的一个项目中,我目前使用标记的union。我想使用其他东西,因为C++中的union不允许您使用带有构造函数、析构函数或重载赋值运算符的对象。我查询了any和variant的大小,并对它们进行了一些实验。在我的平台中,variant取其最长可能类型的大小加上8个字节:我认为它只是8个字节的类型信息,其余的是存储的值。另一方面,any只需要8个字节。由于我在64位平台上,我猜任何人都只是持有一个指针。Any怎么知道它持有什么类型?Variant如何通过模板实现它的功能?在使用这些类之前,我想进一步了解它们。

c++ - C++11 std::bind 和 boost::bind 的区别

这两者有什么区别吗?或者我是否可以安全地将代码中每次出现的boost::bind替换为std::bind从而消除对Boost的依赖? 最佳答案 boost::bindhasoverloadedrelationaloperators,std::bind没有。boost::bindsupportsnon-defaultcallingconventions,std::bind不保证(标准库实现可能提供此作为扩展)。boost::bind提供了一种直接机制,允许人们防止对嵌套绑定(bind)表达式(boost::protect)、std::

c++ - 使用属性树在 Boost 中创建 JSON 数组

我正在尝试使用boost属性树创建一个JSON数组。documentation说:“JSON数组映射到节点。每个元素都是一个空名称的子节点。”所以我想创建一个名称为空的属性树,然后调用write_json(...)来获取数组。但是,文档并没有告诉我如何创建未命名的子节点。我试过ptree.add_child("",value),但这会产生:Assertion`!p.empty()&&"Emptypathnotallowedforput_child."'failed文档似乎没有解决这一点,至少我无法弄清楚。有人可以帮忙吗? 最佳答案

c++ - 带有 boost::shared_ptr 的 static_cast?

static_cast与boost::shared_ptr的等价物是什么?也就是说,我要如何重写下面的内容Base*b=newDerived();Derived*d=static_cast(b);当使用shared_ptr时?boost::shared_ptrb(newDerived());boost::shared_ptrd=??? 最佳答案 使用boost::static_pointer_cast:boost::shared_ptrb(newDerived());boost::shared_ptrd=boost::static_

c++ - 如何将 boost 绑定(bind)与成员函数一起使用

以下代码导致cl.exe崩溃(MSVS2005)。我正在尝试使用boostbind来创建一个调用myclass方法的函数:#include"stdafx.h"#include#include#includeclassmyclass{public:voidfun1(){printf("fun1()\n");}voidfun2(inti){printf("fun2(%d)\n",i);}voidtestit(){boost::functionf1(boost::bind(&myclass::fun1,this));boost::functionf2(boost::bind(&myclass

c++ - 使用 Boost 库程序选项的必需和可选参数

我正在使用Boost程序选项库来解析命令行参数。我有以下要求:一旦提供“帮助”,所有其他选项都是可选的;一旦没有提供“帮助”,所有其他选项都是必需的。我该如何处理?这是我处理这个的代码,我发现它非常多余,我认为一定有一个容易做的,对吧?#include#include#includenamespacepo=boost::program_options;boolprocess_command_line(intargc,char**argv,std::string&host,std::string&port,std::string&configDir){intiport;try{po::o