草庐IT

BOOST_NO_EXCEPTIONS

全部标签

c++ - boost::正则表达式-\bb?

我这里有一些使用了boost::regex::perl的遗留代码,但注释不当。我之前对一个特定的构造感到疑惑,但由于代码(或多或少)起作用了,我不愿意碰它。现在我不得不触摸它,出于技术原因(更准确地说,当前版本的Boost不再接受该构造),所以我必须弄清楚它做了什么-或者更确切地说,是打算做的。正则表达式的相关部分:(?让我头疼的是\bb。我知道\b,但找不到提到的\bb,在这里寻找文字'b'没有意义.\bb是一些特殊的文档不足的功能,还是我必须考虑这是一个错字? 最佳答案 作为Boost似乎是C++的正则表达式引擎,一个兼容性模式

c++ - 捕获 boost 序列化存档异常

我有以下情况。这是一个代码片段,经过编辑以演示问题。ifstreamifs("empty_file");if(!ifs.is_open()){ui.display("Error:Unabletoopenfile\"empty_file\"\n");return;}archive::text_iarchiveia(ifs);try{ia>>some_class;}catch(...){ui.display("Thisshouldcatcheversingleexception\n");}empty_file确实是一个完全空的文件。这应该会导致错误;确实如此。问题是我无法捕获boost抛出

c++编译时字符串连接使用boost-mpl

我试图在编译时使用boost-mpl连接字符串,但从gcc中收到错误。这是示例-usingnamespaceboost;usingnamespacestd;templatestructtype{};templatestructtype{typedefmpl::stringvalue;};templatestructtype{typedefmpl::stringvalue;};structempty{};templatestructconverter;templatestructconverter{typedefmpl::push_back::value,converter::value

Visual Studio 2022: fatal error C1083: 无法打开包括文件: “crtdbg.h”: No such file or directory

1、报错内容fatal errorC1083:无法打开包括文件:“crtdbg.h”:Nosuchfileordirectory出现这个的主要原因是安装WindowsSDK时版本出错,需要根据自己的windows版本选择安装对应版本的WindowsSDKVS2022包括的版本如下:Windows版本WindowsSDK版本Windows10版本1903Windows10SDK版本1903(10.0.18362.1)Windows10版本2004Windows10SDK版本2004(10.0.19041.0)Windows10版本21H2Windows10SDK版本2104(10.0.20348

c++ - 如何解析后跟分号或换行符的条目(boost::spirit)?

在Boost::Spirit中,我如何解析后跟分号或带有可选分号的换行符的条目?示例输入,其中每个条目都是一个int和一个double:121.4;6313.2242356.4;58.1下面是示例代码,仅解析后跟空格的条目:#include#include#include#include#includenamespaceqi=boost::spirit::qi;typedefstd::pairEntry;templatestructMyGrammar:qi::grammar(),Skipper>{MyGrammar():MyGrammar::base_type(entries){ent

c++ - boost 属性树 : Remove a node

如何从boostxml属性树中删除节点?我有这样一个文档:some/foldersome/foldersome/folder我知道如何迭代和打印所有文件夹,但我如何删除其中一项并将xml保存回来? 最佳答案 我可能会尝试:boost::property_tree::ptreept;pt.erase(key); 关于c++-boost属性树:Removeanode,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

c++ - 在 TCP 输入或文件更新上使用 boost :asio with select? 阻塞

我本来打算在我的程序中有一个线程等待两个文件描述符,一个用于套接字,另一个用于描述文件系统的FD(特别是等待查看是否有新文件添加到目录中)).由于我希望很少看到添加的新文件或传入的新TCP消息,因此我希望有一个线程等待任一输入并在它发生时处理检测到的任何输入,而不是用单独的线程来打扰。然后我(终于!)获得了“老板”的许可,可以使用boost。所以现在我想用boost:asio替换基本套接字。只有我遇到了一个小问题。似乎asioimplimented它是自己的select版本,而不是提供我可以直接与select一起使用的FD。这让我不确定如何在新文件和TCP输入这两种情况下同时阻止一个只

c++ - 如何使错误处理为 boost::spirit 工作

在boost::spirit中,我添加了基于示例roman的错误处理代码。#include#include#include#include#include#include#include#include#include#includenamespaceqi=boost::spirit::qi;namespaceascii=boost::spirit::ascii;namespacephoenix=boost::phoenix;templatestructroman:qi::grammar{roman():roman::base_type(start){usingqi::eps;usin

C++ 设计 : cast from base to derived class with no extra data members

我编写了很多处理消息协议(protocol)的代码。消息协议(protocol)通常会有一个通用的消息帧,可以从串行端口或套接字反序列化;该帧包含消息类型,消息负载必须根据消息类型进行处理。通常我会编写一组多态类,其中包含访问器方法和一个引用消息框架的构造函数。我突然想到,我可以直接从消息帧派生访问器类,然后从消息帧重新解释_cast到适当的访问器类,而不是根据对消息帧的引用构造访问器类。这使代码更加简洁并节省了一些字节和处理器周期。请参阅下面的(极其人为和浓缩的)示例。显然,对于生产代码,这一切都需要适当封装,转换成为派生类的成员,更好地分离关注点,并添加一些验证。为了把一个简明的例

c++ - boost::可选的函数返回

我正在审查一些生产代码,其中一个函数说它将返回一个boost::optional,但它只返回一个double:例如boost::optionalFoo(){doublea=1.0;doubleb=2.0;returna+b;}这种风格是否可以接受/是否存在不安全的情况? 最佳答案 这是我喜欢使用的样式。返回的double将被隐式转换为boost::optional,它已被设置并包含该double的值。我想不出任何不安全的情况。编辑:当optional持有的类型为bool时有一些注意事项-请参阅文档。此转换将使用此boost::opt