草庐IT

boost-locale

全部标签

c++ - 使用引用参数 boost python 方法调用

当尝试通过引用从python对C++类方法进行简单调用时:classFoo{protected:int_internalVal;public:Foo():_internalVal(5){}voidgetVal(int&val_io){val_io=_internalVal;}voidgetValDoesNothing(intval_io){val_io=_internalVal;}}可以编译boostwrapper代码:BOOST_PYTHON_MODULE(libBar){boost::python::class_("Foo").def("getVal",&Foo::getVal).

c++ - 链接到 boost::program_options 不能正常工作

存在以下库文件:cls/usr/local/Cellar/boost/1.51.0/lib$lslibboost_program*libboost_program_options-mt.alibboost_program_options-mt.dylib我在#include中包含以下标题:cls/usr/local/Cellar/boost/1.51.0/include$lsboost/program_options.hppboost/program_options.hpp我尝试将库链接到-lboost_program_options-mt-L/usr/local/Cellar/boo

c++ - 可以 boost 公历日期和 boost posix 时间正确计算 unixtime 吗?

我正在尝试编写一个简单的时间戳系统,它提供当前时间的纪元秒和小数秒。我正在使用boost库并且有这样的东西:constboost::posix_time::ptimeepoch(boost::gregorian::date(1970,1,1));boost::posix_time::ptimetime(){boost::posix_time::ptimenow=boost::posix_time::microsec_clock::universal_time();returnnow;}boost::posix_time::time_durationdur=(time()-epoch);

c++ - boost::ref 没有发生匹配调用错误,但 std::ref 没有

我已经编写了一些代码,使用仿函数和boost::中的ref和bind模板计算vector元素的数量>或std::(对于C++11)命名空间。我正在使用#define在boost::和std::命名空间之间切换。我使用的是boost版本1.53,我的编译命令是g++test.cpp-std=c++11。我已经尝试使用gcc版本4.7.2和4.6.3,但我在这两个版本上都遇到了同样的错误。我有3个问题:我不明白为示例2生成的错误。是否可以仅通过切换命名空间来使这样的代码具有可移植性?是否有很好的引用资料详细描述了bind的std和boost版本之间的差异,ref和功能?(我看到了this问

c++ - 使用 Boost.Proto 构建 Eigen 表达式模板

我想使用Boost.Proto将嵌入式领域特定语言转换为一系列使用Eigen库实现的矩阵运算。由于效率很重要,我希望proto生成Eigen表达式模板并避免过早评估。我实现了一个可以生成矩阵乘法表达式的简单语法。下面的代码在没有警告的情况下编译(在g++4.8.0和IntelC++2013.3上,使用Boost1.54.0和Eigen3.1.3)并且只要我的表达式只有一个乘法运算就可以工作。一旦我向链中添加更多乘法,它就会崩溃。Valgrind告诉我,这是因为Eigen::GeneralProduct表达式模板之一在求值完成之前被销毁了。我不明白为什么会发生这种情况,或者我可以做些什么

c++ - boost::lexical_cast<> 的语言环境不变保证

我正在使用boost::lexical_cast(double)用于将double转换为字符串,生成JSON序列化字节流,即(在远程端)由.NET解析。我能够强制.NET使用InvariantCulture用于解析,从而在每种可能的语言上返回可预测的结果。但是,我无法在boost::lexical_cast中找到此保证文档。我试了一下,对于不同的区域设置,它的工作方式相同。但是,我不能仅从几个测试中确定,我是否遗漏了文档中的某些内容,或者根本无法保证这一点,我必须使用其他东西吗?编辑:我发现了一个问题。std::locale::global(std::locale("Czech"));

c++ - 了解 Boost.spirit 的字符串解析器

#include#includenamespaceqi=boost::spirit::qi;intmain(){usingqi::string;std::stringinput("a");std::string::iteratorstrbegin=input.begin();std::stringp;boolok=qi::phrase_parse(strbegin,input.end(),((string("a")>>string("a"))|string("a")),qi::space,p);if(ok&&strbegin==input.end()){std::cout这个程序输出a

c++ - 防止 Boost Spirit Symbol 解析器过早接受关键字

当以有效关键字(符号)开头时,如何防止BoostSpirit符号解析器接受关键字(符号)。我希望该构造无法将“ONEMORE”作为一个整体进行解析,并且无法成功解析“ONE”,因为这是一个有效的关键字,然后在“MORE”上失败。下面是代码的实际输出:Keywordasanumber:1Keywordasanumber:2Keywordasanumber:1Invalidkeyword:MORETHREE这就是我喜欢的样子:Keywordasanumber:1Keywordasanumber:2Invalidkeyword:ONEMOREKeywordasanumber:3该代码只是一个

c++ - boost 正则表达式 : [:alpha:] and accented characters

我正在尝试使用Boost将字符串中的每个非字母字符替换为"":std::stringsanitize(std::string&str){boost::regexre;re.imbue(std::locale("fr_FR.UTF-8"));re.assign("[^[:alpha:]]");str=boost::regex_replace(str,re,"");returnstr;}intmain(){std::stringtest="(ça)/.2424,@vatrèsbien?";cout结果是avatrsbien但我想得到çavatrèsbien。我错过了什么?

c++ - Boost 记录器追加到文件

我已经初始化了记录到文件的接收器:logging::add_file_log(keywords::file_name="sample_%N.log",/**/keywords::rotation_size=10*1024*1024,/**/keywords::time_based_rotation=sinks::file::rotation_at_time_point(0,0,0),/**/keywords::format="[%TimeStamp%]:%Message%",/**/keywords::auto_flush=true);它看起来在程序重新启动期间重写了文件。如何让它附加