摘要:1,字符串 到 数值类型的转换 2,数值 到 字符串的转换 3,异常处理情况 4,boost::lexical_cast 的原型: template<typename Target, typename Source> Target lexical_cast(Source arg); lexical_cast 是依赖于字符串流 std::stringstream 的,其原理也是相当的简单:把源类型 (Source) 读入到字符流中,再写到目标类型 (Target) 中。但这里同时也带来了一些限制: - 输入数据 (arg) 必须能够 “完整” 地转换,否则就会抛出 bad_lexic
阅读全文
随笔分类 - STL/Boost學習
摘要:2. 同步Timer本章介绍asio如何在定时器上进行阻塞等待(blocking wait). 实现,我们包含必要的头文件. 所有的asio类可以简单的通过include "asio.hpp"来调用.#include <iostream> #include <boost/asio.hpp> 此外,这个示例用到了timer,我们还要包含Boost.Date_Time的头文件来控制时间.#include <boost/date_time/posix_time/posix_time.hpp> 使用asio至少需要一个boost::asio::i
阅读全文
摘要:boost, asio, SPServer boost::asio是一个高性能的网络开发库,Windows下使用IOCP,Linux下使用epoll。与ACE不同的是,它并没有提供一个网络框架,而是采取组件的方式来提供应用接口。但是对于常见的情况,采用一个好用的框架还是能够简化开发过程,特别是asio的各个异步接口的用法都相当类似。 受到 SP Server 框架的影响,我使用asio大致实现了一个多线程的半异步半同步服务器框架,以下是利用它来实现一个Echo服务器:1. 实现回调: static void onSessionStarted(RequestPtr const& requ
阅读全文
摘要:我稍稍整理了下,就是加了点注释,很基本的东西,大家可以参考socket的几个流程,我上面也有提示的,希望对大家有所帮助。最后,如果大家有什么好的方法希望能让我也分享下,谢谢!服务端:#include <boost/asio.hpp>#include <boost/bind.hpp>#include <boost/shared_ptr.hpp>#include <boost/enable_shared_from_this.hpp>#include <iostream>using boost::asio::ip::tcp;#define
阅读全文
摘要:boost库中的网络编程的例子比较复杂,不太好理解,所以,从网上找了一个简单点的例子。网址如下:http://blog.chinaunix.net/u3/93184/showart_1846119.html.经过修改,可以运行。服务器代码:Servier.cpp#include <boost/asio.hpp>#include <boost/bind.hpp>#include <boost/shared_ptr.hpp>#include <boost/enable_shared_from_this.hpp>#include <iostrea
阅读全文
摘要:1.boost::any boost::any是一种通用的数据类型,可以将各种类型包装后统一放入容器内最重要的它是类型安全的。有点象COM里面的variant.使用方法:any::type() 返回包装的类型any_cast可用于any到其他类型的转化 #include < boost / any.hpp > void test_any() {typedefstd::vector < boost::any > many;manya;a.push_back( 2 );a.push_back( string ( " test " )); for (uns
阅读全文
摘要:stl string 使用1. 查找字符std::wstring strData = L"result[北京市, 上海市, 深圳市]/result"void DoF(const std::wstring &strData, std::liststd::wstring& listDo){ std::wstring strTarB = L"result["; std::wstring strTarE = L"]/result"; std::wstring::size_type nBeginTempB = 0, nEndTempB = 0, nBeginTempE = 0, nE
阅读全文
摘要:在浅尝boost之timer的post里,我提到boost::timer在linux和windows下的不同表现,并用ACE_OS::gettimeofday做了一个替代方案。不过,为了这个功能把ACE的DLL绑到一起,感觉不是那么愉快。 下面是另一个方案,利用boost::date_time库来解决#includeboost/date_time/posix_time/posix_time.hppclassElapsedTime{public:ElapsedTime():start_time_(boost::posix_time::microsec_clock::local_time())
阅读全文
摘要:我一直是在努力推介boost,因为boost是一块美玉,但,没有什么是完美的。现在,我将暴露出boost的一点瑕疵:boost::timer。虽说是瑕不掩瑜,但瑕疵就是瑕疵。先看一看下面的例子: //win2000中vc7.1编译运行 boost::timert; Sleep(1000); coutt.elapsed()endl; //redhat9中gcc3.2.3编译运行 boost::timert; sleep(1); coutt.elapsed()endl; 他们的结果是一样吗?不同的操作系统,时钟精度是不一样,结果自然不完全一样;但我说的不一样不是这一点小小的差异,
阅读全文
摘要:Table11.5.Erase/Replace Algorithm nameDescriptionFunctionsreplace/erase_firstReplace/Erase the first occurrence of a string in the inputreplace_first() replace_first_copy() ireplace_first() ireplace_first_copy() erase_first() erase_first_copy() ierase_first() ierase_first_copy() replace/erase_lastRe
阅读全文
摘要:Table11.4.Find algorithms Algorithm nameDescriptionFunctionsfind_firstFind the first occurrence of a string in the inputfind_first() ifind_first() find_lastFind the last occurrence of a string in the inputfind_last() ifind_last() find_nthFind the nth (zero-indexed) occurrence of a string in the inpu
阅读全文
摘要:Table11.3.PredicatesAlgorithm nameDescriptionFunctionsstarts_withCheck if a string is a prefix of the other onestarts_with()istarts_with() ends_withCheck if a string is a suffix of the other oneends_with()iends_with() containsCheck if a string is contained of the other onecontains()icontains() equal
阅读全文
摘要:Boost String Algorithms Library 是很有用的一个库,它让C++程序员不用一次又一次的为了字符串的处理制造一些小小的轮子。这里我将逐一用实例详细的说明每一个函数的使用,希望给自己给同道带来方便。 Boost String Algorithms Library 是很有用的一个库,它让C++程序员不用一次又一次的为了字符串的处理制造一些小小的轮子。《浅尝boost之String algorithms library》里我主要介绍了它的Split ,因为这个功能很出彩,其它则一带而过。不过,当多次向朋友推荐这个库后,反馈得到的信息让我觉得详细列出其每一个函数的使用,作为一
阅读全文
摘要:很多时候我都想在自已的代码中全部使用std::string代替MS的CString来保证我的程序在未来易于移植,但老实说CString比std::string好用很多,每每还是被诱惑了;再看看C#的string,用起来感觉更好。不过有了这个库 我可以基本抵制住诱惑了... #includeboost/algorithm/string.hpp 很多时候我都想在自已的代码中全部使用std::string代替MS的CString来保证我的程序在未来易于移植,但老实说CString比std::string好用很多,每每还是被诱惑了;再看看C#的string,用起来感觉更好。不过有了这个库我可以基本
阅读全文
摘要:虽然网上讨论不少Boost正则表达式的问题,推荐用其他正则库,但是还是用了下。[code]#include list#include boost/lexical_cast.hpp#include boost/regex.hpp //使用正则表达式 #include iostream//#include "../PStringConv/PStringConv.h"#include stringusing namespace std;using namespace boost;regex expression("[垃圾文字]{8}"); //模式int main(int arg
阅读全文
摘要:一:编译boost的正则表达式需要编译(如果不需要全部Boost的功能的话,请不要build all boost,那会花掉好几个小时。我推荐仅仅build需要的库就好。)原有的boost 1.33似乎使用vc8编译的时候有问题。下载boost 1.34.1,使用“Visual Studio 2005 Command Prompt”,进入到boost_1_34_1\libs\regex\build:nmake vc8.makOK,生成的文件在vc80下。二:学习正则表达式deelx_zh.rar不错的正则表达式的学习资料,顺便推荐一下:http://www.regexlab.com/ 这个站长还
阅读全文
摘要:boost::algorithm学习#include boost/algorithm/string.hppusing namespace std;using namespace boost; 一:大小写转换1 to_upper() 将字符串转为大写Example:string str1(" hello world! ");to_upper(str1); // str1 == " HELLO WORLD! "2 to_upper_copy() 将字符串转为大写,并且赋值给另一个字符串Example:string str1(" hello world! ");string str2;str2
阅读全文
摘要:一 Boost::bind 在STL中,我们经常需要使用bind1st,bind2st函数绑定器和fun_ptr,mem_fun等函数适配器,这些函数绑定器和函数适配器使用起来比较麻烦,需要根据是全局函数还是类的成员函数,是一个参数还是多个参数等做出不同的选择,而且有些情况使用STL提供的不能满足要求,所以如果可以我们最好使用boost提供的bind,它提供了统一的接口,提供了更多的支持,比如说它增加了shared_ptr,虚函数,类成员的绑定。 二 源码剖析1) bind1st,bind2st函数绑定器,把二元函数对象变为一元函数对象。2) mem_fun,把成员函数变为函数对象。3) f
阅读全文
摘要:一 Boost::array 在以前,如果我们要处理一组数据,我们可能使用一般数组存储,或者需要许多的对数组的数据的操作的时候,我们使用STL容器存储。但是如果我们的需求是,我们能够提前固定一组数据的大小,或提前知道这组数据的大小,但是我们又想这组数据进行一些操作,比如排序。。。显然对这个情况,上面的使用原始数组或STL容器都有点不太合适,因为原始的数组显得笨重,的我们自己实现一些重复的功能,但是如果是使用STL容器的话,有可能会导致空间和性能的下降。 基于上面的情况,所以在Boost中引入Boost::array,也可能会被加入下一代的C++标准中。Boost::array,内部仍然是固
阅读全文
摘要:一 Boost::smart_Ptr 我们学习C++都知道智能指针,例如STL中的std::auto_ptr,但是为什么要使用智能指针,使用它能带给我们什么好处呢?最简单的使用智能指针可以不会因为忘记delete指针而造成内存泄露。还有如果我们开发或者使用第三方的lib中的某些函数需要返回指针,这样的返回的指针被client使用的时候,lib就会失去对返回的指针的控制,这样delete的指针的任务一般就会交给调用方client,但是如果client忘记调用delete或是调用的时机不正确,都有可能导致问题,在这种情况下就最好使用智能指针。还有使用智能指针可以保证异常安全,保证程序在有异常抛出
阅读全文