CppPrimer笔记 Chapter8 IO库

来源:互联网 发布:事业单位网络教育学历 编辑:程序博客网 时间:2024/05/22 14:21

CppPrimer笔记 Chapter8 IO库

标签: Cpp


  • CppPrimer笔记 Chapter8 IO库
    • IO类81
    • 文件输入输出82


IO类(8.1)

  • IO对象无拷贝或赋值,因而也不能将形参或返回类型设置为流类型,通常以引用方式传递和返回流.
  • 由于读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的
  • bool(cin) 用于检测流状态,只要出现了 badbit(崩溃),failbit(IO操作失败),eofbit(到达文件结束), 则为false
  • 管理流状态
auto old_state = cin.rdstate();//记住cin当前状态cin.clear();//使cin有效process_input(cin);//使用cincin.setstate(old_state);//将cin置为原有状态cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit);//将failbit 与 badbit 复位,但保持eofbit不变
  • 管理输出缓冲区(8.1.3) 导致缓冲刷新的原因:
    • 程序正常结束
    • 缓冲区满
    • endl来显示刷新
    • 每个输出操作后,可以用unitbuf.默认情况下cerr是设置unitbuf的,因而写到cerr的内容都是立即刷新的
    • 一个输出流关联到另一个刘.读写关被联流时,关联的流会立刻刷新.默认cincerr都关联到cout,因此读cin或写cerr都会时cout缓冲区被刷新. 因此cin>>val导致cout的缓冲被刷新
cout<<"hi!"<<endl;//额外输出一个换行后刷新cout<<"hi!"<<flush;//不附加额外字符后刷新cout<<"hi!"<<ends;//额外输出一个空字符后刷新cout<<unitbuf;//开启:所有输出操作后都会立即刷新缓冲区cout<<nounitbuf //关闭
  • 程序崩溃,输出缓冲区不会被刷新
  • 每个流同时最多关联到一个流,但多个流可以同时关联到同一个ostream.

文件输入输出(8.2)

  • 当一个fstream对象离开作用域时,它会被自动销毁,与之关联的文件会自动关闭.
  • out模式打开文件会丢弃已有数据
0 0
原创粉丝点击