C++输出输入以及字符串

输出

         库 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风格的字符串

       一个C风格的字符串就是一个以 0 字符结束的字符数组。如上所示,我们很容易将一个C风格的字符串放进一个 string 里。要调用以C风格字符串为参数的函数,我们就必须能够以C风格字符串的形式提取出 string 的值。函数 c_str() 能完成这件事。比如说,我们可以用C的输出函数 printf() 打印出 name,方式如下:

   

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值