草庐IT

boost-locale

全部标签

c++ - 在模块化程序中使用 Boost.Program_options

我使用的代码由一组模块组成,编译成单独的库。反过来,库以不同的组合链接以构建不同的二进制文件。所以,这是非常有序的。不同的模块使用不同的命令行参数,我想使用Boost.Program_options进行解析。由于命令行参数集取决于链接在一起的库,我事先不知道所有参数,因此无法将它们添加到program_options::options_description。如何使每个模块能够添加其命令行参数并稍后读取它们?谢谢 最佳答案 例如通过使用options_description的成员函数add(constoptions_descript

c++ - boost Weak_Ptr : Destruction is more expensive than expected

无论出于何种原因,我们看到销毁弱指针的成本相当高。这是罪魁祸首代码:~weak_count()//nothrow{if(pi_!=0)pi_->weak_release();//Consumesahugechunkofourtime.#ifdefined(BOOST_SP_ENABLE_DEBUG_HOOKS)id_=0;#endif}我们没有处于Debug模式,调试Hook也没有启用。弱释放消耗了非常多的时间。这是一个已知的问题?我们做错了什么吗?boost版本:1.36编译器:VS2008编译器套件。不幸的是,由于各种原因,我们被锁定在这个Boost版本中,所以我更想知道这些奇怪的

c++ - 如何在不先将整个文件读入内存的情况下使用 Boost::Spirit::Lex 对文件进行 lex?

我正在研究使用boost::spirit::lex编写词法分析器,但我能找到的所有示例似乎都假定您已先将整个文件读入RAM。我想编写一个不需要整个字符串都在RAM中的词法分析器,这可能吗?或者我需要使用其他东西吗?我尝试使用istream_iterator,但除非我使用constchar*作为迭代器类型,否则boost会给我一个编译错误。例如我能找到的所有示例基本上都是这样做的:lex_functor_type>lex_functor;//assumesentirefileisinmemorycharconst*first=str.c_str();charconst*last=&fir

c++ - boost::spirit::qi 和乱序变量

我正在编写一个词法分析器。它接受一个英文字符串,并将其转换为一组纬度/经度坐标。它有点像Google地球。不管怎样,我的符号表和语法都写好了,解析格式化数据也很开心。structLatLongDegrees{std::stringdirLat_;doubledegLat_;std::stringdirLong_;doubledegLong_;}例如:{"北",23.59,"东",-30.82}这是我的语法:basic=(latitude>>''>>double_>>''>>longitude>>''>>double_);其中纬度和经度是从速记罗盘方向映射到字符串(例如“e”到“East

c++ - std、boost 或其他具有隐式键的哈希表容器的广泛实现

如果我理解正确,std::map和std::unordered_map都会显式存储键(存储键/值对)。是否有其他一些现成可用的容器(std、boost或其他广泛实现)不会存储key,而是允许使用函数(即使用隐式key?)从存储的值中派生key。 最佳答案 std::set或std::unordered_set,具有适用于存储值类型的散列和/或比较函数。但是,查找将通过存储的值类型而不是键来完成,因此您还需要一种方法来根据键构造一个临时对象。 关于c++-std、boost或其他具有隐式键

c++ - boost::date_time, g++-4.7.0, 编译错误

以下代码在g++-4.7.0下出现编译错误,但在g++-4.6下编译正常。#include#includeusingnamespacestd;intmain(){boost::posix_time::ptimetime_t_epoch(boost::gregorian::date(1970,1,1));cout下面是反复看到的错误信息(编译器输出了很多信息)/usr/include/boost/date_time/local_time/local_date_time.hpp:433:84:error:useofdeletedfunctionboost::shared_ptr>::sha

c++ - boost::math::erf的算法

boosterf函数背后的算法是否有任何可用的详细信息?该模块的文档不是很精确。我发现的只是几种方法混合在一起。对我来说,它看起来像是Abramowitz和Stegun的变体。混合了哪些方法?这些方法是如何混合的?erf函数(常数时间)的复杂度是多少?塞巴斯蒂安 最佳答案 BoostMathToolkit的文档有一长串references,其中包括Abramowitz和Stegun。erf-function接口(interface)包含一个policy可用于控制数值精度(及其运行时复杂性)的模板参数。#includenamespac

c++ - 如何从 Boost Spirit 中的函数中抛出 expectation_failure?

在Boost::Spirit中,如何从绑定(bind)了Boost::Bind的函数中触发expectation_failure?背景:我解析了一个包含复杂条目的大文件。当一个条目与前一个条目不一致时,我想失败并抛出一个expectation_failure(包含正确的解析位置信息)。当我解析一个条目时,我绑定(bind)了一个函数来确定该条目是否与之前看到的不一致。我编了一个小玩具示例来说明这一点。在这里,我只是想在int不能被10整除时抛出一个expectation_failure:#include#include#include#include#includenamespaceq

c++ - 使用 boost::asio::read_async 读取 Protobuf 对象

我正在使用Boostasio编写一个应用程序,其中客户端和服务器交换使用googleproto-buffers序列化的消息。我不知道通过网络发送的序列化消息的大小是多少。proto-buf对象似乎没有任何分隔符。这是.proto文件的内容。packagetutorial;messagePerson{requiredstringname=1;requiredint32id=2;optionalstringemail=3;}这是我从服务器写的方式tutorial::Personp;p.set_name("abcdpqrs");p.set_id(123456);p.set_email("ab

c++ - boost::variant - 为什么模板参数的优先级高于 const 字符串参数

我在以下代码中看到一个我不理解的行为。关键是,如果我声明operator()的第二个重载,如下所示:booloperator()(Tother)constbooloperator()(constT&other)const程序的输出是:string但是如果我使用下面的声明:booloperator()(T&other)const输出将是:othertype有人可以解释一下为什么在后一种情况下没有调用operator()(conststring&other)吗?#include"boost/variant/variant.hpp"#include"boost/variant/apply_v