Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427908
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 594
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-17 16:24
个人简介

我是一只小小鸟

文章分类

全部博文(184)

文章存档

2016年(1)

2015年(55)

2014年(127)

2013年(1)

分类: C/C++

2014-05-02 18:47:57

原文地址:[c++]输入输出流 作者:lqseu

1.为什么要用iostream以及与c输入输出函数的关系
 
c++的输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的 stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。 iostream为内置类型类型对象提供了输入输出支持,同时也支持文件的输入输出,类的设计者可以通过对iostream库的扩展,来支持自定义类型的输入输出操作。
 
由于c语言没有运算符重载机制,导致stdio库的不可扩充性,让我们无法让printf()和scanf()支持对自定义类对象的扩充识别,而c++是可以通过运算符重载机制扩充 iostream库的,使系统能能够识别自定义类型,从而让输入输出明确的知道他们该干什么,格式是什么。
 
通过c++的类的封装机制,可以保证输入输出文件总是被安全的打开和关闭。
 
2.iostream: istream 和 ostream
 
我们所熟悉的输入输出操作分别是由istream(输入流)和ostream(输出流)这两个类提供的,为了允许双向的输入/输出,由istream和ostream派生出了iostream类。
iostream库不光支持对象的输入输出,同时也支持文件流的输入输出。
 
3.fstream: ifstream 和 ofstream
和文件有关系的输入输出类主要在fstream.h这个头文件中被定义,在这个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操作,他们分别是ifstream、ofstream、fstream,其中fstream类是由iostream类派生而来,他们之间的继承关系见下图所示。
由于文件设备并不是标准的默认设备,所以在使用时必须定义该类的一个对象进行操作。
 
在构造函数中可以定义一些文件的参数,模式,权限等。
 
4. strstream: ostrstream 和 istrstream
简单的理解就是能够控制字符串类型对象进行输入输出的类,这时输入输出流是与内存而不是一个文件或者标准输出一起工作,它允许我们用同样的读函数和格式函数去操作内存的字节。
 
  • istrstream类用于执行C风格的串流的输入操作,也就是以字符串数组作为输入设备。
  • ostrstream类用于执行C风格的串流的输出操作,也就是一字符串数组作为输出设备。
  • strstream类同时可以支持C风格的串流的输入输出操作
  • 他们的继承关系如下图所示:

     

    5.stringstream

    用于C++风格的字符串的输入输出的。

    stringstream类的对象我们还常用它进行string与各种内置类型数据之间的转换

    6.io_state 输入/输出的状态标志

    C++中负责的输入/输出的系统包括了关于每一个输入/输出操作的结果的记录信息。

    阅读(655) | 评论(0) | 转发(0) |
    0

    上一篇:python中help信息

    下一篇:vs2010程序编译问题

    给主人留下些什么吧!~~