8-IO库

IO库
  • IO库和头文件
    • iostream:包含的类型:istream,wistream:表示从流里面读取数据;ostream,wostream,向流里面写入数据;iostream,wiostream:表示的含义是
      读写流;
    • fstream:含义和上面相似;
    • sstream:istringstream,wistringstream:类似于这种格式含义和上面的相同,其中w:表示的是wchar_t类型,用来操纵宽字符语言;
    • 标准库可以忽略不同类型之间的差异,这是通过继承机制来实现的,例如:ifstreamistringstream都是继承istream的;
    • 标准库流特性都可以无差别的应用于普通流,文件流,和string流,以及char或者宽字符;
  • IO对象无拷贝或者赋值
    • IO对象不能够拷贝或者赋值;
    • 通过某些特定的操作可以用来访问和操纵流的条件状态;常用的状态包括:
状态含义
iostream用于表达条件状态的完整功能
badbit用来表示流已经崩溃
failbit用来表示一个IO操作已经失败
eofbit用来指示流到达了文件结束
goodbit用来指出流未处于错误状态,此值保证是0
s.eof()若s的eofbit置位,则返回true
s.fail()如果流的failbit或者badbit置位,则返回为true
s.bad()如果badbit置位那么就返回为true
s.good()如果s处于有效状态,就返回true
s.clear()将流的所有状态位复位,将流的状态设置为有效
s.ckear(flags)根据所给的状态位进行复位操作
s.setstate(flags)表示设置相应的状态位
s.rdstate()表示查看当前的状态位
  • 在使用流时,应该检查返回条件,也就是需要判断流执行是否成功;
  • 流的状态可以使用上述的条件进行查询;
  • 关于输出缓冲的问题:

    • 缓冲机制可以使操作系统将多个输出操作,整合成单一的系统级别的写操作;
    • 缓冲区刷新的原因包括:
      • 1.程序正常结束,main()函数的return操作执行,并且缓冲刷新被执行;
      • 2.缓冲区满时,需要执行刷新操作,新的数据才可以写入缓冲区;
      • 3.在每个输出操作之后,可以使用unitbuf设置流的内部状态,来清空缓冲区,默认情况下,cerr的内容是立即刷新的;
      • 4.一个输出流被关联到另一个输出流,当读写被关联的流时,关联的流会立即刷新;默认情况下,cincerr是关联到cout的,所以cin或者cerr存在
        操作时,cout会被立即刷新;
    • 手动刷新你缓冲区的几种方式:
      • endl:执行换行操作并且刷新缓冲区;
      • flush:刷新缓冲区,但是不输出任何额外的字符;
      • ends:输出空字符,然后刷新缓冲区;
    • 使用cout << unitbuf;表示在之后的所有输出操作之后,都应该立即刷新缓冲区;
    • 使用cout << nounitbuf;表示回归到正常的缓冲方式;
    • 当一个程序执行时崩溃,那么输出缓冲区,不会被立即刷新;
    • tie函数的两个重载的作用:
      • a.tie():如果a关联到某个输出操作,那么就返回关联的指针,如果没有关联,就返回NULL;
      • a.tie(&b):表示将a的操作关联到b的操作上面;
    • 每个流最多关联到一个流,但是多个流都可以关联到ostream里面;
    • 关于文件的输入输出操作
      • ifstream:从一个制定文件读取数据;
      • ofstream:从一个制定文件写入数据;
      • fstream:读写制定文件;
    • 文件流对象
      • ifstream in();:用于构造一个ifstream并且打开指定对象;
    • 成员函数open()close(),分别用于打开和关闭制定文件,并且需要注意的是如果对于一个打开的文件流执行open操作,会导致failbit被重置,之后的
      所有对于文件的操作就会失败;
    • 当一个fstream对象离开作用域时,会被自动的析构和销毁,同时close()函数会被自动的调用;
    • 文件的打开模式:
      • in:表示按照只读模式打开;
      • out:表示按照写的方式打开;
      • app:每次写操作,都定位到文件的末尾;
      • ate:打开文件立即定位到文件的末尾;
      • trunc:表示截断文件;
      • binary:表示按照二进制文件进行IO操作;
      • 按照out打开的文件会丢失已有的数据,如果需要保留,需要显示的指定app或者是in模式;
      • 在每次打开文件时,都需要设定文件模式,可以显示的进行设定,也可以隐式的进行设定,如果没有指定,就会使用默认值;
  • string流:

    • 包含在头文件sstream里面,包含三中类型来支持内存IO;
      • istringstream:表示从string里面读取数据;
      • ostringstream:表示向string里面写入数据;
      • stringstream:表示的含义是既可以向string里面写入数据,也可以读取string里面的数据;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值