李sir_Blog

博客园 首页 联系 订阅 管理
上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 71 下一页

2011年1月13日

摘要: 很多时候我都想在自已的代码中全部使用std::string代替MS的CString来保证我的程序在未来易于移植,但老实说CString比std::string好用很多,每每还是被诱惑了;再看看C#的string,用起来感觉更好。不过有了这个库 我可以基本抵制住诱惑了... #includeboost/algorithm/string.hpp 很多时候我都想在自已的代码中全部使用std::string代替MS的CString来保证我的程序在未来易于移植,但老实说CString比std::string好用很多,每每还是被诱惑了;再看看C#的string,用起来感觉更好。不过有了这个库我可以基本 阅读全文
posted @ 2011-01-13 17:35 李sir 阅读(477) 评论(0) 推荐(0)

摘要: 虽然网上讨论不少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 阅读全文
posted @ 2011-01-13 17:33 李sir 阅读(896) 评论(0) 推荐(0)

摘要: 一:编译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/ 这个站长还 阅读全文
posted @ 2011-01-13 17:32 李sir 阅读(596) 评论(0) 推荐(0)

摘要: 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 阅读全文
posted @ 2011-01-13 17:30 李sir 阅读(802) 评论(0) 推荐(0)

摘要: 一 Boost::bind 在STL中,我们经常需要使用bind1st,bind2st函数绑定器和fun_ptr,mem_fun等函数适配器,这些函数绑定器和函数适配器使用起来比较麻烦,需要根据是全局函数还是类的成员函数,是一个参数还是多个参数等做出不同的选择,而且有些情况使用STL提供的不能满足要求,所以如果可以我们最好使用boost提供的bind,它提供了统一的接口,提供了更多的支持,比如说它增加了shared_ptr,虚函数,类成员的绑定。 二 源码剖析1) bind1st,bind2st函数绑定器,把二元函数对象变为一元函数对象。2) mem_fun,把成员函数变为函数对象。3) f 阅读全文
posted @ 2011-01-13 17:01 李sir 阅读(2496) 评论(0) 推荐(0)

摘要: 一 Boost::array 在以前,如果我们要处理一组数据,我们可能使用一般数组存储,或者需要许多的对数组的数据的操作的时候,我们使用STL容器存储。但是如果我们的需求是,我们能够提前固定一组数据的大小,或提前知道这组数据的大小,但是我们又想这组数据进行一些操作,比如排序。。。显然对这个情况,上面的使用原始数组或STL容器都有点不太合适,因为原始的数组显得笨重,的我们自己实现一些重复的功能,但是如果是使用STL容器的话,有可能会导致空间和性能的下降。 基于上面的情况,所以在Boost中引入Boost::array,也可能会被加入下一代的C++标准中。Boost::array,内部仍然是固 阅读全文
posted @ 2011-01-13 17:00 李sir 阅读(1002) 评论(0) 推荐(0)

摘要: 一 Boost::smart_Ptr 我们学习C++都知道智能指针,例如STL中的std::auto_ptr,但是为什么要使用智能指针,使用它能带给我们什么好处呢?最简单的使用智能指针可以不会因为忘记delete指针而造成内存泄露。还有如果我们开发或者使用第三方的lib中的某些函数需要返回指针,这样的返回的指针被client使用的时候,lib就会失去对返回的指针的控制,这样delete的指针的任务一般就会交给调用方client,但是如果client忘记调用delete或是调用的时机不正确,都有可能导致问题,在这种情况下就最好使用智能指针。还有使用智能指针可以保证异常安全,保证程序在有异常抛出 阅读全文
posted @ 2011-01-13 16:53 李sir 阅读(946) 评论(0) 推荐(0)

摘要: Boost::tuple就为我们提供了一种类似于匿名struct的方法为我们解决函数的多个返回值的问题。既增强了代码的可读性有不增加代码量。其实在STL中已经有这样的特例,std::pair其实就是boost::tuple的2个参数的特例 一 Boost::tuple 很多的时候我们经常需要为我们的函数返回多个值,一般的做法是通过传入非常量的指针或引用,但是这样的话可能可读性就要差一些,使用者可能需要确切的文档才能确定到底哪个是返回值,为了更好的可读性,我们可以使用class或struct来封装我们要返回的多个值,然后返回封装struct或class,但是使用这种方法的弊端就是增加的程序的代 阅读全文
posted @ 2011-01-13 16:47 李sir 阅读(1098) 评论(0) 推荐(0)

摘要: 在boost中有boost::Any为我们提供了类似java或.net中的object类型,boost::Any能够代表任意类型,实现任意类型的类型安全存储以及安全的取回,常用在将不同类型的对象存储在标准容器中一 Boost::Any 很多时候我们想有一种可以代表任何类型的类型,比如像纯面向对象语言java或.net中的Object类型,但是对于C++本身并没有这样一个基类,所以我们如果要解决这类问题,首先我们考虑的是使用基类的指针,这能够解决以部分问题,但是更多的我们可以求助于void*,使用void*的缺点就是丢失了类型信息和缺乏类型安全。 幸好的是在boost中有boost::Any为我 阅读全文
posted @ 2011-01-13 16:29 李sir 阅读(929) 评论(0) 推荐(0)

摘要: Boost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。唯一的关于boost的book:Beyond the C++ Standard Library: An Introduction to Boost... 一 BOOSTBoost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。(引自:Beyond the C++ Standard Library: An Introduction to Boost)(慢慢体会哦!)二 参考主要:boost的在线document:http://boost.org/libs/libraries.htm唯一的 阅读全文
posted @ 2011-01-13 16:22 李sir 阅读(837) 评论(0) 推荐(0)

上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 71 下一页