草庐IT

c++ - 将可选的隐式转换为 bool 值?

我正在阅读一些代码,但遇到了一些我不明白的事情。它是关于测试Boost::optional值是否被初始化的。它使用提供ASSERT_TRUE()宏的gtest框架。#include"gtest\gtest.h"voidtest(){boost::optionalopt=someFunc();ASSERT_TRUE(!!opt);}为什么在opt之前需要!!?boost::optional是否未隐式转换为宏所需的bool值?我认为使用ASSERT_TRUE(opt)来检查opt是否持有正确的值就足够了吗? 最佳答案 Isaboost:

c++ - boost::asio::streambuf - 如何重用缓冲区?

我正在实现使用asiosocket.async_read()和boost::asio::async_read_until()方法从套接字异步读取数据的TCP服务器。两者都使用相同的处理程序从boost::asio::streambuf读取数据。通过async_read()调用的完美处理程序:voidhandle_read(constboost::system::error_code&ec,std::size_tytes_transferred)){m_request_buffer.commit(bytes_transferred);boost::asio::streambuf::con

Python3、Boost-Python 和 Cpp 链接器错误

所以我打算把我的笔记本电脑扔出窗外,然后去烧掉AppleHQ。查看以下更新:我无法让python3、boost-python和clang相互协作。我遇到的错误正在运行:clang++-ohello.sohello.cpp调用响应:Undefinedsymbolsforarchitecturex86_64:"__Py_NoneStruct",referencedfrom:boost::python::api::object::object()inhello-0c512e.o"_main",referencedfrom:implicitentry/startformainexecutabl

c++ - 如何用数据创建一个boost线程?

我在使用boost::bind和创建线程时遇到了一些问题。本质上,我想在“扫描仪”对象上调用“扫描”函数,使用绑定(bind)。像这样:Scannerscanner;intid_to_scan=1;boost::threadthr1(boost::bind(&scanner::scan));但是,我在语法上被绊倒了。如何将数据传递给扫描?作为构造函数的一部分? 最佳答案 请记住,任何成员函数的第一个参数都是对象。所以如果你想调用:scanner*s;s->scan()对于bind你会使用:boost::bind(&scanner::

c++ - 将带有 Boost 的 C++ 应用程序从 Linux 移动到带有 Visual Studio 6 的 Windows

2年前,我在Linux中使用Boost编写了一个小程序。现在我想让它在Windows中工作。我发现我的libs文件夹中几乎没有.a文件。我想知道如何让它在Windows中工作?我需要在Windows中构建Boost来获取库还是可以在某处下载?我正在使用VisualStudio6。 最佳答案 是的,您需要针对不同的平台重新编译。巧合的是,我在这个notlongago上发布了说明.我非常建议您不要使用VisualStudio6。它非常过时,而且非常不合规。您可以免费获得较新的版本,如Express。您不会错过任何东西。

c++ - 是否可以将成员初始化推迟到构造函数主体?

我有一个类,其成员是一个对象,但没有默认构造函数。我想在构造函数中初始化这个成员,但在C++中我似乎做不到。这是类(class):#include#includeusingboost::asio::ip::udp;templateclassudp_sock{public:udp_sock(std::stringhost,unsignedshortport);private:boost::asio::io_service_io_service;udp::socket_sock;boost::array_buf;};templateudp_sock::udp_sock(std::strin

c++ - Boost序列化断言失败

我使用boost的二进制序列化,直到现在它运行良好。我有std::list指向序列化输出(oarchive)的指针,但序列化在对象的serialize()函数中失败,带有MSVC的对话框:R6010-abort()hasbeencalled这样的字符串被打印到控制台窗口中:Assertionfailed:0==static_cast(t)||1==static_cast(t),filec:\programfiles\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp,line91这是什么意思?项目非常大,资源是分布式的,

c++ - 使用带有 split_iterator 的分类器

关于boost字符串算法,我似乎遗漏了一些东西。我正在尝试将split_iterator与使用Clasifier作为拆分点一起使用。所以,例如,我希望能够做这样的事情:make_split_iterator(str,is_space);但是make_split_iterator需要一个Range和一个Finder。所以我需要的是找到一些序列来从分类器创建查找器。有谁知道如何做到这一点,或者甚至可能吗? 最佳答案 您可以使用token_finder,如make_split_iterator(str,token_finder(is_sp

c++ - 如何从一条路径中减去另一条路径?

所以...我有一个基本路径和一个新路径。新路径包含基本路径。我需要看看新路径有什么不同。就像我们有/home/,新路径是/home/apple/one,我需要从它得到apple/one。注意-当我从(homePath/diffPath)创建一些路径时,我需要再次获取那个/home/apple/one。如何使用BoostFileSystem做这样的事情? 最佳答案 使用stem()和parent_path()并从新路径向后走,直到我们回到基本路径,这可行,但我不确定它是否非常安全。请小心,因为路径“/home”和“/home/”被视为

c++ - 初始化多态指针容器

我可以初始化多态boost::ptr_vector与boost::assign::list_of?#include#includeboost::ptr_vectorls=boost::assign::list_of(newAnt)(newBee)(newCat);编译失败:error:nomatchforcallto'(boost::assign_detail::generic_list)(Bear*)'替换boost::ptr_vector与std::vector给出相同的错误。两个人建议手动提供模板参数Animal*至list_of:boost::assign::list_of(n