加载中...

7.11 字符串连接


有趣的是,+操作符可以用于字符串,它执行字符串连接操作。连接是指将字符串首尾相连。例如:

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"这样的表达式在语法上是正确的,虽然它会产生奇怪的结果,至少在我的开发环境中是这样。


还没有评论.