当前位置:鱼C工作室 >C++ > 查看文章

从一个小程序说起2 – C++快速入门03

从一个小程序说起2

 

让编程改变世界

Change the world by program


 

课后题详解(C&C++)

 

要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置。当用户按下键盘上的“Enter”键时,数据输入结束。程序自动对所有的整数进行求和并打印出结果。

 

C语言版本:homework.c(源代码下载)

C++语言版本:homework.cpp(源代码下载)

 

C++版本分析

 

这个程序使用了流对象 cin。这个对象的类型是istream,它知道如何从用户终端读取数据。

cin >> i;

cin 输入操作符又称为提取操作符,它一次从输入流对象cin 提取一个整数。

 

当用户进行键盘输入时,对应的字符将输入到操作系统的键盘缓冲区中。

这样,当用户点击键盘上的“Enter”键时,操作系统把键盘缓冲区的内容传输到cin 流的内部缓冲区,“>>”操作符随后从这个缓冲区提取需要的信息。

 

我们还发觉,如果用户不进行键盘的输入,程序将会阻塞。这是阻塞性(blocking)IO的例子。

“>>”最初定义为右移操作符,它在C++ 中进行了重载,当它按照这里所示的方式使用时,它就用于从输入流对象提取信息。

 

另外,这个操作符对所有内建的数据类型都进行了重载,所以它可以从输入流对象提取出int, float, double 型数据,也可以提取字符串等数据。

在while( cin >> i ) 中,表达式 cin >> i 返回输入流对象本身,也就是cin。但是,如果到达了文件尾或者提取操作符遇到一个非法值,这个返回值将是 false。

 

我们小举一个例子:如果我们试图把一个浮点数读取到一个 int 型变量中,当提取操作符遇到小数点时,它将使输入流对象置于一个错误的状态中,导致 cin 的值为 false。

注意,在while( cin >> i ) 中,当用户在键盘上点击“enter”键的时候,在这一句并不会结束。

 

另外,观察两个程序,我们发现:C 和 C++事实上在声明变量的事实上有点不同,C++允许我们在程序的任意位置声明变量。

这大大的提高了大型C++ 程序的可读性,因为这样子我们就可以在实际需要使用变量的时候才来声明他们。

 

cin、cout对象的多个方法

 

前边我们讲过,cin 是 istream类的对象,那么cin 同样具有一些方法,这些方法可以增强对于输入操作的控制,下边我们将通过简单的例子介绍 cin 的一些方法!

 

例子一:cin.ignore()和cin.getline() (源代码下载)

例子二:cin.get()和cin.peek() (源代码下载)

例子三:cin.gcount()和cin.read() (源代码下载)

 

前边我们已经介绍了几种常用的 cin 对象的方法,下边再介绍几种关于 cout 对象的方法。同样我们通过实例在让大家快速认识!

 

实例一:cout.precision() (源代码下载)

实例二:cout.width() (源代码下载)

 

好了,不为难大家的记忆力了,暂时就这么多吧~


为您推荐

报歉!评论已关闭.