codecamp

C++ 字符串连接

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

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

C++ 增量与减量操作符
C++ apstring是可变的
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }