2.5 字符串简介
虽然字符数组很有用,但它有一定的限制。简单地说它就是存放在内存中的一组字符,如果要用它做什么事情,必须处理所有细节。例如,引号内字符数组的大小在编译时就确定了。如果想在这样的字符数组中添增字符,需要了解很多有关的知识(包括动态内存管理,字符数组的拷贝、连接等),才能完成添加任务。这正是我们所希望的有一种对象能替我们完成的事。
标准的C++string类就是设计用来处理(并隐藏)对字符数组的低级操作,而这些操作早期是由C程序员来完成的。从有C语言以来这些操作就一直是一个编程费时、产生错误的原因。虽然本书第二卷中专门有一章介绍string类,但由于string能简化编程,对程序编写十分重要,所以,在此对它作一些介绍并加以使用。
为使用string类,需要包含C++头文件<string>。string类在名字空间std中,因此要用using指令。由于操作符重载,string类的使用是很直观的:
前两个字符串s1和s2开始时是空的。s3和s4的两种不同初始化方法效果是相同的(也可简单地用一个string对象来初始化另一个string对象)。
可以用“=”来给string对象赋值。“=”用其右边的内容代替string对象先前的内容。不必为先前的内容费心,它被自动处理。连接string对象,只需用“+”操作符。“+”也可将string连接到字符数组中。如果想将string加到一个string或字符数组之后,可以用“+=”操作符完成这一操作。最后说明一点,输入输出流知道如何来处理string,所以可直接向cout发送string(或能产生string的表达式,如上面的例子中的s1+s2+"!")来打印它。