I.8 使用string类
传统的C风格字符串深受不是真正的类型之苦。可以将字符串存储在字符数组中,也可以将字符数组初始化为字符串。但不能使用赋值运算符将字符串赋给字符数组,而必须使用strcpy( )或strncpy( )。不能使用关系运算符来比较C风格字符串,而必须使用strcmp( )(如果忘记了这一点,使用了>运算符,将不会出现语法错误,程序将比较字符串的地址,而不是字符串的内容)。
而string类(参见第16章和附录F)使得能够使用对象来表示字符串,并定义了赋值运算符、关系运算符和加法运算符(用于拼接)。另外,string类还提供了自动内存管理功能,因此通常不用担心字符串被保存前,有人可能会跨越数组边界或将字符串截短。
String类提供了许多方便的方法。例如,可以将一个string对象追加到另一个对象的后面,也可以将C风格的字符串,甚至char值追加到string对象的后面。对于接受C风格字符串参数的函数,可以使用c_str( )方法来返回一个适当的char指针。
string类不仅提供了一组设计良好的方法来处理与字符串相关的工作(如查找子字符串),而且与STL兼容,因此,可以将STL算法用于string对象。