当前位置:C++技术网 > 资讯 > string系列:1 string概述

string系列:1 string概述

更新时间:2015-06-23 14:48:48浏览次数:1+次

    在介绍string使用前,先介绍一下string的相关背景知识,更好的指导string的使用。
    string 是C++的一个字符串处理的类,是一个很强大的字符串处理工具。曾经我们在C中使用的C的字符串处理工具,因为C是面向过程的,这些工具使用起来也是挺好用的,但是,因为零散,很多函数都查找起来都不方便。我个人这么认为,使用起来总是没有一个完整的字符串处理体系的感觉。多数简单的字符串处理都是使用字符数组自己写函数处理,每次写重复写就有点烦。现在C++的string类为我们提供了强大的字符串处理,还可以面向以后,因为string是基于STL的,本质上string是一个模板类,string是一个实例。而说到字符处理,原先在使用MFC字符串处理,使用CString这个类,使用相当方便,因为微软封装的还是挺不错的。但是,你写一个算法总不会去加载MFC库吧,这样你的算法依赖度就高了,可移植性就不好了。如果一个程序没有使用MFC,你的算法就没法使用。当然是有办法将MFC的CString抽取出来,但是就太麻烦了,完全没有必要。因为string是C++自带的类,使用好,绝不比CString逊色,并且,只要是用C++的程序,这算法就可以使用。况且这是语言级别的字符串处理,自然效率也是会高点。当然,CString的格式化字符串很方便,我们自然也可以使用C++的格式化字符串来处理,效果是一样的。因为之前对于C字符串、C++字符串、MFC字符串、Windows字符串这些,我都不知道到底使用哪个好了,最终我还是选择string,C的使用不方便,只是在实现特定算法,使用C字符串处理,接近底层,更加灵活。MFC字符串在MFC程序使用特别好,因为其他的函数需要的字符串基本都是需要CString对象引用的。Windows字符串,因为系统也提供了一些字符串处理函数,我觉得还是尽量不这样使用,和平台要相关了就不通用了,如果以后开发其他系统的,我们就得重构代码了。而string是C++内置的,只要使用C++,这就可以用,既方便有强大而已依赖性小,可移植性好。建议慢慢把string用熟。
    string是STL的一个实例化模板,有些概念也就和STL相关,如迭代器。因为它本质就是STL,所以就在STL板块讨论。
    string的模板定义是:

templateclass charT,class traits=char_traits<charT>,class Allocator=allocator<charT> >
class basic_string
{
    定义内容
};

    看到这个模板的定义,没学过的自然就看不懂,也会怕看。其实,没学过也不要怕,因为string是这个的实例化,自然就不用需要你去实例化,因为是C++实例化好的一个工具,我们使用就当做一般的对象使用就可以了。对于这个定义的介绍,就不做介绍。读者只要先看看这种形式就行了。使用熟练后,如果学了STL,这些就自然明白了,现在没必要深究这个,学会使用就可以了。
    在使用string时,用到的常量有size_type,它就是一个整型,因为是模板指定声明的,它与具体的实现有关。至于整型是4字节还是8字节,看具体的环境,不过C++会保证string的类型的正确分配。只要把size_type当成是无符号的整数即可。这个在具体的函数还会说明。
    因为string是一个模板类的实例化,在使用时就是一个对象,声明初始化要以对象的方式进行,而不要当做基本类型来对待,不然很多行为就不理解了。所以就会有构造函数析构函数以及重载之类的。因为是STL相关的,一些函数就是STL中的经常见到的函数。STL的算法也可以应用到string上,因为string就是一个容器,一个特殊的容器。
    在使用string,可以当做是一般的类型对待,因为有各种运算符的重载,可以让我们使用时感觉就可以基本类型一样。string的具体使用,请看系列文章的其他文章。