1.IO对象时不可复制或者赋值的:也就是说形参或者返回类型也不能为流类型。如果非要传递或者返回IO对象的的话,则必须传递或者返回指向对象的指针或者引用。如:  ofstream &print(ofstream&);while(print(out2)){}。对IO对象的读写会改变它的状态,因此引用必须是非const的。

2.流的条件状态:通过strm::iostate来定义流的条件状态

strm::badbit 是strm::iostate类型的值,用来指示流被破坏了。strm::failbit是strm::iostate类型的值,用来指示IO操作失败。

strm::eofbit是strm::iostate类型的值,用来指示流已到达文件结束符。

s.eof()如果设置了流的eofbit值,则函数返回true。s.fail()如果设置了流的failbit值,则函数返回true。s.bad()如果设置了流的badbit值,则函数返回true。

s.good()如果流处于有效状态,则函数返回true。s.clear()流s中的所有状态值设置为有效状态。s.clear(flag)流s中的指定的条件状态值设置为有效状态,flag是strm::iostate类型。s.restate()返回流s的当前条件状态情况,返回类型为strm::iostate类型。

3.文件的操作:主要分为五步:1.创建文件流对象(输入文件流ifstream in ,输出流 ofstream out)这里涉及到两种初始化的方式:直接法和间接法。直接法就是ifstream in(“文件名称”);间接法:ifstream in; in.open("文件名称")。2.打开文件:调用open函数(前面已经讲到)3.判断是否打开成功或者说是文件流是否绑定相应的文件。如:调用fail()函数来判断:if(in.fail()){};或者if(!in)4.进行读写操作:(将文件中的字符串读出来)读:string s; in>>s;(将字符串写进文件中)写:string s;out<<s; 5.操作完了之后别忘了关闭文件。in.close()。

3.1 文件打开模式:in 打开文件做读操作;out 打开文件做写操作;app 在每次写之前找到文件尾部;ate 打开文件后立即将文件定位在文件尾;trunc 打开文件是清空已存在的文件流;binary 以二进制模式进行IO操作。具体形式如下:

ofstream out;

out.open("文件名称",ofstream::out);(写操作模式)或者out.open("文件名称",ios::out);(写操作模式)

如果有多种模式的情况则为out.open("文件名称",ofstream::out|ofstream::in);(读写操作模式)或者out.open("文件名称",ios::out|ios::in);

3.2 模式组合方式为:out  打开文件做写操作,删除文件已有的数据;out | app 打开文件做写操作,在文件尾写入;out | trunc 与out模式相同;

in 打开文件做读操作;in | out 打开文件做读写操作,并定位于文件开头处;in|out|trunc 打开文件做读写操作,删除文件中已有的数据。

3.3 在关闭文件之后一般将文件流的标志问都设置问有效状态:in.clear()。

4. 字符串流

istringstream 和ostringstream 以及stringstream。这些类必须包含头文件sstream。

字符串流主要用在:当输入的是一行字符串的时候时,又想知道这一行当中有多少个字符串组成。此时采用字符串流来实现。

如:  string line,word;

  while(getline(cin,line))

  {

    istringstream stream(line);//将每一行的内容与字符串流绑定在一起

    while(stream>>word)//一行当中的所有字符串都输出

    {//此处在做相应的处理每个字符串}

  }

  

第八章 标准IO库的更多相关文章

  1. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  2. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  3. 文件IO函数和标准IO库的区别

    摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...

  4. C++ Primer 读书笔记: 第8章 标准IO库

    第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...

  5. 高级UNIX环境编程5 标准IO库

    标准IO库都围绕流进进行的 <stdio.h><wchar.h> memccpy 一般用汇编写的 ftell/fseek/ftello/fseeko/fgetpos/fsetp ...

  6. c++ primer 学习杂记3【标准IO库】

    第8章 标准IO库 发现书中一个错误,中文版p248 流状态的查询和控制,举了一个代码例子: int ival; // read cin and test only for EOF; loop is ...

  7. 18、标准IO库详解及实例

    标准IO库是由Dennis Ritchie于1975年左右编写的,它是Mike Lestbain写的可移植IO库的主要修改版本,2010年以后, 标准IO库几乎没有进行什么修改.标准IO库处理了很多细 ...

  8. 第十三篇:带缓冲的IO( 标准IO库 )

    前言 在之前,学习了 read write 这样的不带缓冲IO函数. 而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 wri ...

  9. C5 标准IO库:APUE 笔记

    C5 :标准IO库 在第三章中,所有IO函数都是围绕文件描述符展开,文件描述符用于后续IO操作.由于文件描述符相关的操作是不带缓冲的IO,需要操作者本人指定缓冲区分配.IO长度等,对设备环境要求一定的 ...

随机推荐

  1. mismatch位置(MD tag)- sam/bam格式解读进阶

    这算是第二讲了,前面一讲是:Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶 MD是mismatch位置的字符串的表示形式,貌似在call SNP和indel的时候会用 ...

  2. One Class SVM, SVDD(Support Vector Domain Description)(转)

    今天给大家介绍一下one class classification以及用SVDD(support vector domain description)做one class classification ...

  3. Spring Boot 学习

    下载安装了如下软件.设置了环境变量. Groovy-Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python.Ruby和Smalltalk的许多强大的特性,Groovy 代码 ...

  4. 扒一扒JavaScript 预解释

    带var关键字预解释 让我们先看下这段代码执行的结果: 代码如下: alert(n);//弹出undefinedvar n = 10; 弹出的结果是undefined,为何不是10?让我们再看下面这段 ...

  5. selenium+python笔记1

    #!/usr/bin/env python # -*- coding: utf-8 -*- """@desc: 讲讲web项目中常用的方法属性 webdriver 提供了 ...

  6. spring3-hibernate3整合

    Spring与Hibernate整合关键点: 1) Hibernate的SessionFactory对象交给Spring创建: 2) hibernate事务交给spring的声明式事务管理. SH整合 ...

  7. HTML5自学笔记[ 18 ]canvas绘图基础5

    获取图像数据:getImgData(x,y,w,h),返回的是一个ImageData对象,这个对象有三个属性保存图像信息:width/height/data.data是一个数组,保存了每个像素的信息, ...

  8. Scrum团队成立,阅读《构建之法》第6~7章,并参考以下链接,发布读后感、提出问题、并简要说明你对Scrum的理解

    Scrum团队成立:  团队名称:神的孩子 团队目标:短期目标,完成O2O模式的第一个平台 团队口号:我们都不是神的孩子 团队照: 角色分配 产品负责人: 许佳仪.决定开发内容和优先级排序,最大化产品 ...

  9. NSInternalInconsistencyException: loaded the "XXXView" nib but the view outlet was not set

    运行过程中App崩溃,报错如标题. 原因: viewController的view没有绑定xib的view. 解决方法: 在File's Owner中将view与viewController的view ...

  10. java中汉字自动转换成拼音

    java中汉字自动转换成拼音 1.需要下载jar包 pinyin4j.2.5.0.jar ,加入到WEB-INF下的lib里边,右键add to bulid path. 2.[代码]PinYinUti ...