第八章:标准IO库

标签: io iostream ios file c 存储
890人阅读 评论(0) 收藏 举报
分类:

1.IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,sstream定义的类型则用于读写存储在内存中的string对象.

2.IO对象不可复制或赋值,即表明

①无法将其存储在容器中

②形参或返回类型也不能为流类型,如果要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用

3. IO标准库管理一系列条件状态成员,用来标记给定IO对象是否处于可用状态,或者碰到了哪种特定的错误。标准库定义的一组函数和标记,提供访问和操纵流状态的手段。
strm::iostate    
机器相关的整型名,由各个iostream类定义,用于定义条件状态
strm::badbit      strm::iostate
类型的值,用于指出被破坏的流
strm::failbit      strm::iostate
类型的值,用于指出失败的IO操作
strm::eofbit      strm::iostate
类型的值,用于指出流已经到达文件结束符
s.eof()              
如果设置了流seofbit值,则该函数返回true
s.fail()              
如果设置了流sfailbit值,则该函数返回true
s.bad()             
如果设置了流sbadbit值,则该函数返回true
s.good()           
如果流s处于有效状态,则该函数返回true
s.clear()           
将流s中的所有状态值都重设为有效状态
s.clear(flag)     
将流s中的某个指定条件状态设置为有效。flag的类型是strm::iostate
s.setstate(flag) 
给流s添加指定条件。flag的类型是strm::iostate
s.rdstate()        
返回流s的当前条件,返回值类型为strm::iostate
流必须处于无错误状态,才能用于输入或输出。

badbit标志着系统级的故障,出现这类错误,则该流通常就不能再使用了,如果出现的是failbit可恢复的错误,通常是可以修正的

         流的状态有bad,fail,eofgood操作揭示前三个和good相反;clearsetstate操作用于改变条件成员的状态

4.下面几种情况将导致缓冲区的内容被刷新,即写入到真实的输出设备或者文件:

①程序正常结束.作为main返回工作的一部分,将清空所有输出缓冲区.

②在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新

     用操作符显式的舒心缓冲区,endl(其实还有flushends)

     在每次输出操作执行完后,unitbuf操纵符设置流的内部状态从而清空缓冲区

     可将输出流与输入流关联起来.在这种情况下,在读输入流时将刷新缓冲区

警告:如果程序崩溃了,则不会刷新缓冲区

这一章在平时编程时一般是简单的使用,用于对文件的读写.

例子:

●创建并向文件写入信息:

方式一:

#include <fstream.h>

#include <iomanip.h>

 

void main()

{

    ofstream f1("a.txt");

    if (!f1)

    {

           return;

    }

    f1<<"姓名:"<<"袁孙良"<<endl;

    f1<<"性别:"<<""<<endl;

    f1.close();

}

方式二:

#include <fstream.h>

 

void main()

{

       ofstream fin("a.txt");

       if (!fin)

       {

              cout<<"File open error";

              return;

       }

       char c[80] = "我是一个兵!";

       fin.write(c,80);

       fin.close();

}

 

●从文件中读取信息:

方式一:

#include <fstream.h>

 

void main()

{

       fstream f("a.txt",ios::out);

       f<<123<<3.14<<'A'<<"How are you";

       f.close();

 

       f.open("a.txt",ios::in);

       int i;

       double d;

       char c;

       char s[20];

       f>>i>>d>>c;

       f.getline(s,20);

 

       cout<<i<<"  "<<d<<"   "<<c<<"   "<<s<<endl;

 

       f.close();

}

方式二:

#include <memory.h>

#include <fstream.h>

 

void main()

{

       ifstream fin("a.txt",ios::nocreate);

       if (!fin)

       {

              cout<<"File open error";

              return;

       }

       char c[80];

       memset(c,0,80);

       while (!fin.eof())

       {

              fin.read(c,80);

              cout<<c<<endl;

       }

       fin.close();

}

简单的复制文件:

#include <fstream.h>

 

void main()

{

       ifstream fin("a.txt",ios::nocreate|ios::binary);

       if (!fin)

       {

              cout<<"File open Error"<<endl;

              return;

       }

 

       ofstream fout("b.txt",ios::binary);

       char c[1024];

       while (!fin.eof())

       {

              fin.read(c,1024);

              fout.write(c,fin.gcount());

       }

 

       fin.close();

       fout.close();

}

 

 

 

查看评论

第八章 标准IO库

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

第八章 标准io库

 8.1 面向对象的io库1) 组成: 对应的宽字符的流类型就是在前面加了一个w例如:wistreamwostreamwcoutwcin…..2) 继承关系3) io对象不可以复制或复制1. 因此不能...
  • worm003
  • worm003
  • 2011-01-22 18:23:00
  • 241

第八章 标准IO库

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

第八章:标准 IO 库

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

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:27
  • 937

【c++ primer 笔记】第八章 IO库

1. 不能拷贝或对IO对象赋值 进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能个是const的。 条件状态 badbit 系统级错误,如不...
  • LSbiubiubiu
  • LSbiubiubiu
  • 2016-08-26 19:03:11
  • 321

C++标准io库知识整理

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

Linux/UNIX之标准IO库

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

Linux C标准IO库函数详解 一

1、open/close open函数可以打开或者创建一个文件#include #include #include int open(const char *pathname, int fla...
  • u010889616
  • u010889616
  • 2015-08-30 14:21:37
  • 1020

C++中的标准IO库详解

: (1)IO类之间的继承关系图如下: (2)IO类型有三个独立的头文件,iostream头文件定义了控制窗口的类型,fstream头文件定义了读写已命名文件的类型,sstream头文件...
  • zdplife
  • zdplife
  • 2016-03-21 11:09:41
  • 1093
    个人资料
    专栏达人
    等级:
    访问量: 44万+
    积分: 7308
    排名: 3804
    博客专栏
    最新评论