C++的输入与输出

一:输入输出的含义:

      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使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值