第八章 标准io库

原创 2011年01月22日 18:23:00

 

8.1 面向对象的io

1) 组成:

 

对应的宽字符的流类型就是在前面加了一个w例如:

wistream

wostream

wcout

wcin

…..

2) 继承关系

3) io对象不可以复制或复制

1. 因此不能存储在vector 等容器内

2. 当然也不可以作为形参或返回类型,如果用作参数,必须是引用类型.对流的操作总会涉及到改变,所以不要用const类型

8.2 条件状态

1)       标准库定义的状态标记

strm::iostate

 

2)       状态标记的取值

strm::badbit //被破坏的流,系统级错误

strm::failbit //失败的io操作

strm::eofbit //流已经达到文件的结束符

 

3)       查询状态的函数

eof();         //如果strm::eofbit 被设置,返回true

fail();         //如果 strm::failbit 被设置,返回true

good();     //如果流处于有效状态 返回true

bad();        //如果 strm::badbit 被设置,返回 true

 

4)       设置状态的函数

clear();     //使流中所有状态都重设为有效,说白了就是清除错误状态

clear(flag);        //清除指定错误状态

setsate(flag); //strm::iostate 添加指定的状态

 

5)       返回现在状态

rdstate();

8.3 输出缓冲区的管理

1) 刷新缓冲区

endl;//输出一个 ‘/n’ 再刷新

ends;//输出一个 ‘/0’ 再刷新

flush;//直接刷新

 

2) 如果要刷新所有的输出可以用unitbuf操纵符

cout << unituf <<” … ”;//等价于 cout << unituf <<” … ”<<flush;

 

3) 绑定

任何读入输入流的尝试都将首先刷新其对应的输出缓冲

 

cin.tie(&cout);//绑定

cin.tie(0);//取消绑定

ostream *oldTie = cin.tie();//保存绑定对象

8.4 文件的输入和输出

1) 类型

ifstream 读文件

ofstream 写文件

fstream 可读可写

 

2) 打开文件

istream infile(iffile.c_str());

infile.open(“in”);

if(!infile)

         //open error;

 

3) 关联不同文件 

infile.close();

infile.open(“out”);

 

4) 清除状态

当文件流出现了什么非正常状态(包括eofbit )的时候需要clear() 否则不能继续读取

 

4) 文件模式

ostream :  out() trunc(清空已经存在的文件流) app

istream :   ate(定位在文件尾) binary in()

 

例子:

Ifstream &openfile(ifstream& in ,const string &filename)

{

         in.close();

         in.clear();

         in.open(filename.c_str());

         return in;

}

8.5  字符串流

例子:

string line,word;

while(getline(cin,line))

{

         istringstream stream(line);

         while(stream>>word){}

}

 

1)       特定函数

strm.str();//返回string

strm.str(s);//string  复制给s

 

2)       使用

用来转换输入输出格式是不错的类似于c风格的 sprintf的功能

 

 

 

第八章 标准IO库

1.IO对象时不可复制或者赋值的:也就是说形参或者返回类型也不能为流类型。如果非要传递或者返回IO对象的的话,则必须传递或者返回指向对象的指针或者引用。如:  ofstream &print(ofst...
  • liujiyu1989
  • liujiyu1989
  • 2015年08月21日 08:45
  • 82

第八章 标准IO库

1.前面的程序已经使用了多种 IO 标准库提供的工具:  •  istream(输入流)类型,提供输入操作。  •  ostream(输出流)类型,提供输出操作。  •  cin(发音为 see-in...
  • hncujing
  • hncujing
  • 2014年12月17日 13:52
  • 280

第八章:标准IO库

1.IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream定义的类型则用于读写存储在内存中的string对象.2.IO对象不...
  • yuanweihuayan
  • yuanweihuayan
  • 2011年03月19日 22:00
  • 874

第八章:标准 IO 库

参考资源:( http://www.cnblogs.com/kingcat/archive/2012/05/09/2491847.html ) C++ 的输入/输出由标准库提供。 标准库IO 的继...
  • liyangguang1988
  • liyangguang1988
  • 2013年05月03日 07:32
  • 655

Linux/UNIX之标准IO库

标准IO库 当打开一个流时,标准I/O函数fopen返回一个指向FILE对象的指针。该对象通常是一个结构,它包含了标准I/O库为管理该流所需的所有信息,包括:用于实际I/O的文件描述符、指向用于该缓...
  • walkerkalr
  • walkerkalr
  • 2014年04月22日 11:55
  • 867

Linux操作系统-标准IO库(1)

Linux操作系统—标准I/O库(1)(2015-8-3)分类:Linux操作系统  不仅在linux,在很多操作系统上都实现了标准I/O库,该库由ANSI C标准说明。标准I/O库是在系统调用函数基...
  • LazyBone1994
  • LazyBone1994
  • 2015年08月04日 11:38
  • 876

C++标准io库知识整理

今天在写一个文件读写操作得时候,发现知识体现严重混乱,没办法忙写,都是借助百度才搞定的。为此下午决定好好的总结一下c++标准io库的相关知识,用自己平时将ppt的思路来写整理这个文档。 1.标准IO...
  • kluleia
  • kluleia
  • 2014年03月06日 16:01
  • 6563

系统调用与标准IO库区别

Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思...
  • sz_bb
  • sz_bb
  • 2016年05月07日 11:30
  • 851

C++中的标准IO库详解

: (1)IO类之间的继承关系图如下: (2)IO类型有三个独立的头文件,iostream头文件定义了控制窗口的类型,fstream头文件定义了读写已命名文件的类型,sstream头文件...
  • zdplife
  • zdplife
  • 2016年03月21日 11:09
  • 953

【重学《C++Primer第四版》】第八章、标准IO库

本章主要讲解了IO标准库的基础知识。 下面是本章的内容图:简单的iostream继承层次 Details of knowledge 1.基类:C++中的父类就是基类 2.派生类:C++中继...
  • u013637931
  • u013637931
  • 2015年04月20日 19:46
  • 457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第八章 标准io库
举报原因:
原因补充:

(最多只允许输入30个字)