赞
踩
库 iostream
为每种内部类型定义了相应的输出方式。进一步说,为用户定义类型定义一种输出方式也很容易。默认情况下,送到 cout
的输出值都将被转换为字符的序列。例如,
将把字符 1
而后是字符 0
放入标准输出流里。下面也一样:
不同类型的输出可以按一种明显的方式组合在一起:
如果 i
的值是 10
,那么输出将是
字符常量的形式是单引号括起的一个字符。请注意,字符常量被输出为一个字符,而不是一个数值。例如,
将输出 abc
。
一个输出表达式的结果本身还可以用于进一步的输出。例如,
这个函数与 h()
等价
标准库为输入提供了 istream
。与 ostream
一样,istream
能处理内部数据类型的字符序列表示。它也很容易扩充,以便去应付各种用户定义类型。
运算符 >>
(“取入”)被用做输入运算符;cin
是标准输入流。>>
右边运算对象的类型决定了可以接受什么输入,这个运算对象被作为输入操作的目标。例如,
从标准输入读一个数,例如 1234
,放入整型变量 i
;再读一个浮点数,例如 12.34e5
,并将它放入双精度浮点变量 d
。
这里是一个例子,它执行从英寸到厘米以及从厘米到英寸的转换。你输入一个数,后面跟着一个表明单位(厘米或英寸)的字符,这个程序就会按照另一种单位输出对应的值。
这里的 switch
语句相当于一组常量去检查一个值。break
语句用于跳出 switch
语句。各个分情况常量必须互不相同,default
是可选的,程序员也不一定要提供 default
。
我们经常需要输入一系列字符。完成这件事的一个很方便的方式就是将它们读入一个 string
里。例如,
如果你键入
回应将是
按照默认方式,一个空白字符,例如空格符,将结束一次输入。因此,如果你键入
即使空格后的输入好像是York的那个超肥的国王,回答将仍然是
你可以用函数 getline()
读入一个完整的行。例如,
对于这个程序,输入
就能将产生所预期的输出
这种标准字符串有着很好的性质,它可以自动扩展以存放你放进去的任意多的东西。所以,如果你送入了几百万个分号,这个程序也将送回你成页成页的分号---除非你的机器或者操作系统在此之前用完了某种关键性的资源。
标准库提供了一个 string
类型,作为前面所用的字符串文字量的补充。这个 string
类型提供了许多很有用的字符串操作,例如串拼接等。请看这个例子:
在这里,s3 被初始化为如下的字符序列
随后是一个换行符。对于字符串的加法表示的就是拼接。你可以将一个字符串,或一个字符串文字量,或一个字符加到一个字符串上。
在许多应用中,最常见的拼接形式是将某些东西追加到一个字符串的末尾。操作 +=
直接支持这种工作。例如
这两种在字符串末尾追加的方式在语义上是等价的。但我喜欢后面的一种,因为它更紧凑,实现效率也可能更高一些。
很自然,string
可以相互比较,也可以与一个字符串文字量比较。例如,
在其他有用的特征中,还提供了操纵子字符串的功能。例如,
这里的 substr()
运算返回一个字符串,它就是函数参数所指明的那个子串的副本。第一个参数是在本字符串里的一个下标(位置),第二个参数是所需子串的长度。因为下标开始于0,所以 s
得到的值是 Stroustrup
。
replace()
操作用一个值替换掉指定的子串。在上面情况中,开始于位置 0 长 5 的子串是 Niels
,它被用 Nicholas
取代。这样,name
最后的值就是 Nicholas Stroustrup
。请注意,作为替代的串不必与被它替换的子串一样长。
一个C风格的字符串就是一个以 0
字符结束的字符数组。如上所示,我们很容易将一个C风格的字符串放进一个 string
里。要调用以C风格字符串为参数的函数,我们就必须能够以C风格字符串的形式提取出 string
的值。函数 c_str()
能完成这件事。比如说,我们可以用C的输出函数 printf()
打印出 name
,方式如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。