扩展std::string的一种方法

     一般情况下使用STL的通用算法和string类的方法足够解决问题了。扩展std::string的动机是因为STL是跨平台的,而在Windows下,如果使用不同的GUI库,都会用到特定的字符串类,比如MFC/ATL的CString类,QT下的QString类,wxWidgets下的wxString类,后两者还好,直接用的话就好了,但是CString不是跨平台的,而且要是之前的遗留代码是使用的string,现在要移植到对应GUI下时,一般都要大幅改动。之前的做法是,写了一个iDataTypeConvertor的类,把常用的数据类型转换算法封装成该类的静态方法,如下图所示(CString与std::string的转换):

image

这样每次都调用静态方法,次数一多也觉得麻烦,所以觉得有必要扩展下string,使其能够按照习惯的方式来使用(如CString的Format/Replace方法)。

扩展的方法是继承,有两篇文章写的不错,可以参考:

STL中的string扩展,使其和VC的CString融合
http://blog.csdn.net/b2b160/archive/2009/07/27/4384020.aspx
编写一个STL中的CString类
www.vckbase.com/code/relateddoc.asp?id=2049

参考第一篇文章实现的扩展类,如果类外在cpp文件中定义Replace函数,链接时会出错,而放入一个头文件中则不会出问题,还有点点疑惑。

使用:

若是不想使用template,直接写:

"

也是的可以,其他方法都可以像这样添加进来,比如Format方法,这样就能够根据自己的要求来扩展string类了。第二篇文章中就实现了CString的所有方法,然后就能在工程中使用通用的类,方便不少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值