一:输入输出的含义:
1,标准的输入输出:从键盘输入数据,输出到显示屏屏幕。
2,文件的输入输出:从磁盘文件输入数据,数据输出到磁盘文件。
3,字符串输入输出:对内存中指定的空间进行输入输出,通常指定一个字符数组作为存储空间。
C语言采用函数实现输入输出,C++采用类对象实现输入输出。
在C++中,输入输出流被定义为类,C++的I/O库中的类被称为流类,用流类定义过的对象称为流对象。
二:C++的流库:
1,C++专门提供了一些类,专门用于输入输出,这些类组成一个流类库,这些类有两个基类,ios类和streambuf类。
ios是“输入输出流”,是输入输出操作在用户端的接口,为用户的输入输出提供服务,streambuf是处理“流缓冲区”的类,
包括缓冲区起始地址,读写指针和对缓冲区的读写操作,是数据在缓冲区中的管理和数据输入输出缓冲区的实现。
流库的派生关系:
2,由抽象基类ios直接派生出四个派生类,即istream(输入流类),ostream(输出流类),fstreambase(文件流基类),
和strstreambase(串流基类)。fstreambase(文件流基类)再派生出ifstream(输入文件流类)和ofstream(输出文件
流类)。由strstreambase(字符串流类基类)再派生出istrstream(输入串流类),ostrstream(输出串流类)和strstream
(输入输出串流类)等。
3,与流库有关的头文件:
(1)iostream 包含了对输入输出流进行操作所需的基本信息。
(2)fstream 用于用户管理文件的I/O操作。
(3)strstream 用于字符串流I/O。
(4)iomanip 在使用格式化I/O时应包含此文件。
4,在iostream头文件中定义的流对象:
主要的有cin,cout,cerr,clog四个比较重要。
三:标准输出流:
1,cout,cerr和clog‘流:
(1)cout流对象:首先cout不是C++预定义的关键字,它是oetream流派生类的对象,在iostream头文件中定义。
cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout中插入一个endl时,无论缓冲区是否已满,
都立刻输出流中所有数据,然后插入一个换行符,并清空缓冲区。
(2) cerr流对象:是标准出错信息流。它与cout不同的是:cout流通常是传送到显示器输出,但也可以被重定向到磁盘文件,而
cerr中的信息只能在显示器中输出。
(3)clog流对象:它也是标准出错流。它与cerr区别是:cerr是不经过缓冲区直接向显示器输出有关信息,而clog中的信息
存放在缓冲区中,缓冲区满后或者遇到endl时向显示器输出。
2,用流成员函数put输出字符:如:
cout.put(71).put(79).put(79).put(68).put('\n');
四:标准输出流:
1,cin流:是istream类的派生类的对象。
用cin>>从输入流提取数据,遇空格,tab键,回车键就停止。
可以通过测试cin的值,判断流对象是否处于正常状态和提取操作是否成功。
if(!cin)
cout<<"error";
2.cin.get函数,可以读入一个字符:
(1)不带参数的get函数:cin.get()
用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值是读入的字符。
(2)有一个参数的get函数:cin.get(ch)
作用是从输入流中读取一个字符,赋给字符变量ch。
(3)有三个参数的get函数:cin.get(字符数组,字符个数n,终止字符)或者cin,get(字符指针,字符个数n,终止字符)
作用是从输入流中读取n-1个字符,赋给指定的字符数组。(或者字符指针指向的数组)。如果在读取n-1个字符之前遇到
指定的终止字符,则提前终止读取。
3,读入一行字符:cin.getline(字符数组(或者字符指针),字符个数n,终止标志字符)
注:getline函数与get函数的不同之处:
用getline从输入流读取字符时,一次读入一行,如果遇到终止字符标志字符提前结束,指针移到该终止标志字符之后。下一个
getline函数将从该终止标志的下一个字符开始接着读入。
用cin.get函数从输入流读字符时,是逐个字符读入遇终止标志字符时不读入,指针不向后移动,仍然停留在原位置。下一次
读取时仍从该标志字符开始。
4.istream类的其他成员函数:
(1)eof函数:表示文件结束。例如:while(!cin.eof())
(2)peek函数:预测下一个字符,其调用形式为:c=cin.peek();返回值是指针指向的当前字符,但它只是观测,指针扔停留在
当前位置,并不后移。
(3)putback()函数:其调用形式为:cin.putback(ch)。其作用是将前面用get或者getline函数从输入流中读取的字符ch返回到
输入流,插入到当前指针位置,以供后面读取。‘
(4)ignore函数:其调用形式为:cin.ignore(n,终止字符)函数作用是跳过输入流中n个字符,或者在遇到指定的终止字符前结束。
它的使用常结合get使用。