加载中...

7.11 字符串连接


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

  1. apstring fruit = "banana";
  2. apstring bakedGood = " nut bread";
  3. apstring dessert = fruit + bakedGood;
  4. cout << dessert << endl;

这个程序的输出是: banana nut bread。

不幸的是,+操作符不能应用于原生C字符串上,所以不能编写这样的语句:

  1. apstring dessert = "banana" + " nut bread";

因为所有的操作数都是C字符串。但是只要其中一个是apstring,C++就会自动的转换另一个。将一个字符连接到一个apstring变量的头或尾都是可以的。下面的例子中,我们会使用连接和字符算数来输出按字母顺序排列的序列。例如,在Robert McCloskey的《Make Way for Ducklings》一书中,小鸭子的名字分别是Jack,、Kack、Lack、Mack、Nack、Ouack、Pack和Quack.。这是一个按顺序输出这些名字的循环:

  1. apstring suffix = "ack";
  2. char letter = J’;
  3. while (letter <= Q’) {
  4. cout << letter + suffix << endl;
  5. letter++;
  6. }

程序的输出是:

  1. Jack
  2. Kack
  3. Lack
  4. Mack
  5. Nack
  6. Oack
  7. Pack
  8. Qack

当然,这并不是很正确,因为我拼错了“Ouack”和“Quack”。作为练习,请修改程序以修正这个错误。

再次提醒,一定要小心使用字符串连接,在应用apstring时可以使用,而在原生C字符串时不要使用。不幸的是,在C++中,像letter + "ack"这样的表达式在语法上是正确的,虽然它会产生奇怪的结果,至少在我的开发环境中是这样。


还没有评论.