草庐IT

boost-container

全部标签

c++ - boost::program_options - 解析多个命令行参数,其中一些是字符串,包括空格和字符

我想使用boost::program_options解析多个命令行参数。但是,一些参数是用双引号括起来的字符串。这就是我的-voidprocessCommands(intargc,char*argv[]){std::vectorcreateOptions;boost::program_options::options_descriptiondesc("Allowedoptions");desc.add_options()("create",boost::program_options::value>(&createOptions)->multitoken(),"createcomman

c++ - 在 boost::asio::serial_port 上解锁同步读取

我有一个boost::thread,它在boost::asio::serial_port上执行同步读取。当我销毁包含这两者的类的实例时,我希望线程能够优雅地结束,即使它在读取调用中被阻塞也是如此。我该怎么做?查看docs,我试过cancel,但它只适用于异步读/写。然后我尝试了close,但我得到了一个异常,它不是你可以从中恢复的那种。也许使用send_break或native_handle?(这是Windows,可移植性并不重要)更新:我还尝试停止传递给串行端口对象构造函数的io_service,但是读取code>没有解锁。编辑:异常实际上是“可捕获的”,但我不想在析构函数中放置一个

使用 MinGW-w64 和 Boost.Build 的 C++ 构建环境

我目前正在将我的一个项目移植到GCC,并且我正在使用MinGW-w64项目来完成这项工作,因为我需要x64和x86支持。不过,我在设置构建环境时遇到了问题。我的项目目前使用BoostC++库,为了简化构建过程,我也在我的项目中使用了Boost.Build(因为它使集成变得简单)。在MSVC下这很好,因为我可以从命令行执行以下操作:b2toolset=msvcaddress-model=32#compileas32-bitb2toolset=msvcaddress-model=64#compileas64-bitMinGW-w64使这个“有问题”,因为32位和64位工具链位于不同的目录中

c++ - 如何在 Windows 中使用 boost asio 从命令行异步读取输入?

我找到了thisquestion它询问如何异步读取输入,但只适用于POSIX流描述符,这在Windows上不起作用。所以,我找到了thistutorial这表明我可以使用boost::asio::windows::stream_handle而不是使用POSIX流描述符。根据这两个示例,我想出了下面的代码。当我运行它时,我无法在命令提示符中键入任何内容,因为程序会立即终止。我希望它捕获来自用户的任何输入,可能到std::string中,同时允许我的程序中的其他逻辑执行(即从Windows控制台执行异步I/O)。本质上,当我的程序试图从stdin中读取时,我试图避免阻塞我的程序。我不知道这

Windows 'findstr' 命令 : Exclude results containing particular string

对于命令findstrstr1*.*我想添加一些内容来排除包含字符串str2的结果。在Linux中,这样做的方法是添加|grep-vstr2(当然是grepstr1*)。Windows中是否有与-v等效的标志? 最佳答案 Isthereanequivalentflagto-vinWindows?-v等价于/V。C:\Users\Todd>findstr/?Searchesforstringsinfiles..../VPrintsonlylinesthatdonotcontainamatch.

c++ - 使用 Visual Studio 调试时看不到 boost::optional 内容

如果我尝试直接查看变量,我会看到一个?符号。如果我创建一个调用is_initialized函数的watch,我会收到以下错误:CXX0033:Error:errorinOMFtypeinformation我没有找到太多关于使用Google的Boost相关错误的信息。有没有人遇到过这种情况?到处使用OutputDebugString并重新构建是一件麻烦事...编辑:在WindowsXPSP3idem和Boost1.49.0中使用VisualStudio2010SP1和所有修补程序更新:这个问题来来去去,并不是一直发生;DebuggerVisualizers是一个很棒的解决方案,我已将它们

windows - 如何使使用 CMake 构建的可执行文件可以访问 Boost DLL?

我在Windows上使用CMake来构建基于Boost.Test的测试套件。当我动态链接到Boost.Test时,我的可执行文件需要能够找到DLL(位于../../../boost/boost_1_47/lib或与可执行文件相关的类似内容)。所以我需要将DLL复制到可执行文件所在的文件夹中,或者以其他方式使其可找到。使用CMake实现此目标的最佳方法是什么?--附加信息--我的CMakeLists.txt目前有这个Boost相关配置:set(Boost_ADDITIONAL_VERSIONS"1.47""1.47.0")set(BOOST_ROOT"../boost")find_pac

c++ - boost::filesystem::path 和 fopen()

当我尝试这样做时出现错误:pathp="somepath";FILE*file=fopen(p.c_str(),"r");我得到:argumentoftype"constboost::filesystem::path::value_type*"isincompatiblewithparameteroftype"constchar*"谁能告诉我我做错了什么?谢谢 最佳答案 如果您在Windows下,value_type是wchar_t,并且将在fopen的转换中失败(需要一个字符*)。根据文档,您似乎必须使用string()方法来获取

c++ - 编译 boost 时 `threading=multi` 到底做了什么?

我不完全确定threading=multi到底是什么flag在构建boost时会做。文档说:Causestheproducedbinariestobethread-safe.Thisrequirespropersupportinthesourcecodeitself.这似乎不是很具体。这是否意味着访问,例如,boost容器由mutexes/locks保护?或类似?由于我的代码的性能至关重要,我想尽量减少任何不必要的互斥等。更多细节:我的代码是一个插件DLL,它被加载到一个多线程的第三方应用程序中。我将boost静态链接到DLL(除了标准WindowsDLL外,不允许插件具有任何其他依赖

windows - CMake 找不到 Boost 库

我正在尝试使用CMake脚本在Windows上编译基于Boost的应用程序。仅header库工作正常,但CMake无法找到这些库(无法找到以下Boost库:boost_serialization)。CMake脚本的相关部分是:#PathwhereCMakecanfindadditionallibrariesSET(CMAKE_PREFIX_PATHLibs)#BoostSET(Boost_ADDITIONAL_VERSIONS"1.47""1.47.0")SET(Boost_USE_STATIC_LIBSON)find_package(BoostREQUIREDCOMPONENTSse