7.11 字符串连接
最后更新于:2022-04-01 06:21:18
有趣的是,+操作符可以用于字符串,它执行字符串连接操作。**连接**是指将字符串首尾相连。例如:
~~~
apstring fruit = "banana";
apstring bakedGood = " nut bread";
apstring dessert = fruit + bakedGood;
cout << dessert << endl;
~~~
这个程序的输出是: banana nut bread。
不幸的是,+操作符不能应用于原生C字符串上,所以不能编写这样的语句:
~~~
apstring dessert = "banana" + " nut bread";
~~~
因为所有的操作数都是C字符串。但是只要其中一个是apstring,C++就会自动的转换另一个。将一个字符连接到一个apstring变量的头或尾都是可以的。下面的例子中,我们会使用连接和字符算数来输出按字母顺序排列的序列。例如,在Robert McCloskey的《Make Way for Ducklings》一书中,小鸭子的名字分别是Jack,、Kack、Lack、Mack、Nack、Ouack、Pack和Quack.。这是一个按顺序输出这些名字的循环:
~~~
apstring suffix = "ack";
char letter = ’J’;
while (letter <= ’Q’) {
cout << letter + suffix << endl;
letter++;
}
~~~
程序的输出是:
~~~
Jack
Kack
Lack
Mack
Nack
Oack
Pack
Qack
~~~
当然,这并不是很正确,因为我拼错了“Ouack”和“Quack”。作为练习,请修改程序以修正这个错误。
再次提醒,一定要小心使用字符串连接,在应用apstring时可以使用,而在原生C字符串时不要使用。不幸的是,在C++中,像letter + "ack"这样的表达式在语法上是正确的,虽然它会产生奇怪的结果,至少在我的开发环境中是这样。