std::cout((”Enter two numbers:”; 团 8td“cout“gtd::endl; endl是‘个特殊值,称为操纵符(manipulator),将它写入输出流时,具有输出换行的效果, 并刷新与设备相关联的缓冲区(buffer)。通过刷新缓冲区,用户可立即看到写入到流中的输 出。 程序员经常在调试过程中插入输出语句,这些语句都应该刷新输出流。忘记刷新 输出流可能会造成输出停留在缓冲区中.如果程序崩溃,将会导致对程序崩溃位置的 错误推断。 2.使用标准库中的名字 细心的读者会注意到这个程序中使用的是std::cout和std::endl,而不是cDut和endl。 前缀std::表明cout和endl是定义在命名空间(namespace)std中的。使用命名空间,程序 员白J以避免由于无意中使用了与库中所定义名字相同的名字而引致冲突。因为标准库定义的名字 是定义在命名空间中,所以我们可以按自己的意图使用相同的名字。 标准库使用命名空间的副作用是,当我们使用标准库中的名字时,必须显式地表达出使用的 是命名空间std下的名字。std::cout的写法使片j了作用域操作符(scopeoperator,::操作符), 表示使用的是定义在命名空间std中的cout。我们将在3.1节学习到程序中经常使用的避免这 种冗长句法的方法。 3.读入流 在输出提示语后,将读入用户输入的数据。先定义两个名为v1和v2的变量(variable)来 保存输入: int v1.v2: 将这些变量定义为int类型,int类型是一种代表整数值的内置类型。这些变量未初始化 (uninitialized),表示没有赋给它们初始值。这些变量在首次使用时会读入一个值,因此可以没有 初始值。 下一条语句读取输入: 输入操作符【>,操作符)行为与输出操作符相似。它接受一个istream对象作为其左操作数, 接受一个对象作为其右操作数,它从istream操作数读取数据并保存到右操作数中。像输出操 作符·样,输入操作符返回其左操作数作为结果。由于输入操作符返回其左操作数,我们可以将 输入请求序列合并成单个语句。换句话说,这个输入操作等价于: std::cln>>v1; stc:cin”V2; 输入操作的效果是从标准输入读取两个值,将第一个存放在vl中,第二个存放在v2中。 4.完成程序 剩下的就是要输出结果: std::cout(<’’The sum of“<<vl((“and”((v2 ((“is”<<vl+v2<(std::endl; 这条语句虽然比输出提示语的语句长,但概念上没什么区别。它将每个操作数输出到标准输出。 有趣的是操作数并不都是同一类型的值,有些操作数是字符串字面值。例如 ”The sum of” 其他是各种int值,如v1、v2以及对算术表达式v1+V2求值的结果。iost:ream库定义了接 受全部内置类型的输入输出操作符版本。 围 在写c++程序时.大部分出现空格符的地方可用换行符代替。这条规则的一个例 外是字符串字面值中的空格符不能用换行符代替。男一个例外是空格符不允许出现在 预处理指示中。 |