设为首页 加入收藏

TOP

1.2 初识输入输出(2)
2013-10-07 16:26:05 来源: 作者: 【 】 浏览:91
Tags:1.2 初识 输入 输出

1.2  初识输入输出(2)

第一个输出运算符给用户打印一条消息。这个消息是一个字符串字面值常量(string literal),是用一对双引号包围的字符序列。在双引号之间的文本被打印到标准输出。

第二个运算符打印endl,这是一个被称为操纵符(manipulator)的特殊值。写入endl的效果是结束当前行,并将与设备关联的缓冲区(buffer)中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。

程序员常常在调试时添加打印语句。这类语句应该保证"一直"刷新流。否则,如果程序崩溃,输出可能还留在缓冲区中,从而导致关于程序崩溃位置的错误推断。

使用标准库中的名字

细心的读者可能会注意到这个程序使用了std::cout和std::endl,而不是直接的cout和endl。前缀std::指出名字cout和endl是定义在名为std的命名空间(namespace)中的。命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。标准库定义的所有名字都在命名空间std中。

通过命名空间使用标准库有一个副作用:当使用标准库中的一个名字时,必须显式说明我们想使用来自命名空间std中的名字。例如,需要写出std::cout,通过使用作用域运算符(::)来指出我们想使用定义在命名空间std中的名字cout。3.1节(第82页)将给出一个更简单的访问标准库中名字的方法。

从流读取数据

在提示用户输入数据之后,接下来我们希望读入用户的输入。首先定义两个名为v1和v2的变量(variable)来保存输入:

  1. int v1 = 0v2 = 0

我们将这两个变量定义为int类型,int是一种内置类型,用来表示整数。还将它们初始化(initialize)为0。初始化一个变量,就是在变量创建的同时为它赋予一个值。

下一条语句是

  1. std::cin >> v1 >> v2; 

它读入输入数据。输入运算符(>>)与输出运算符类似,它接受一个istream作为其左侧运算对象,接受一个对象作为其右侧运算对象。它从给定的istream读入数据,并存入给定对象中。与输出运算符类似,输入运算符返回其左侧运算对象作为其计算结果。因此,此表达式等价于
 

  1. (std::cin >> v1) >> v2; 

由于此运算符返回其左侧运算对象,因此我们可以将一系列输入请求合并到单一语句中。本例中的输入操作从std::cin读入两个值,并将第一个值存入v1,将第二个值存入v2。换句话说,它与下面两条语句的执行结果是一样的

  1. std::cin >> v1;  
  2. std::cin >> v2;  

完成程序

剩下的就是打印计算结果了:

  1. std::cout << "The sum of " << v1 << " and " << v2 
  2.             << " is " << v1 + v2 << std::endl

这条语句虽然比提示用户输入的打印语句更长,但原理上是一样的,它将每个运算对象打印在标准输出上。本例一个有意思的地方在于,运算对象并不都是相同类型的值。某些运算对象是字符串字面值常量,例如"The sum of "。其他运算对象则是int值,如v1、v2以及算术表达式v1+v2的计算结果。标准库定义了不同版本的输入输出运算符,来处理这些不同类型的运算对象。

1.2节练习

练习1.3:编写程序,在标准输出上打印Hello, World。

练习1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。

练习1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。

练习1.6:解释下面程序片段是否合法。

  1. std::cout << "The sum of " << v1;  
  2.             << " and " << v2;  
  3.             << " is " << v1 + v2 << std::endl

如果程序是合法的,它输出什么?如果程序不合法,原因何在?应该如何修正?
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.2 初识输入输出(1) 下一篇1.4.1 while语句

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)