zoukankan      html  css  js  c++  java
  • C++"流"的那些事儿

    C++中关于“流”存在两个版本,一个是老的版本(非标准化的版本),一个是新的版本(属于C++标准库中的一部分)。目前这两个版本在VC6.0中均被支持,强烈建议使用标准化的版本。下面是新旧版本的类结构图。

    old version

    new version

    新旧版本的区别:

    (1)使用不同的头文件

           old version   头文件如:#include <fstream.h>

           new version  头文件如:#inlcude <fstream>

           新旧版本类定义所在的头文件,如下:

      /*  old vision */

           class ios        --- <ios.h>

           class istream       --- <istream.h>

           class ostream      --- <ostream.h>

           class ifstream      --- <fstream.h>

       class ofstream     --- <fstream.h>

           class iostream     --- <iostream.h>

           class fstream       --- <fstream.h>

           class streambuf             --- <streamb.h>

           class filebuf                   --- <fstream.h>

           cin  cout  cerr  clog           --- <iostream.h>

      /*  new vision */

           class ios_base          ---  <ios>

           class basic_ios          --- <ios>

           class basic_istream      --- <istream>

           class basic_ostream    --- <ostream>

           class basic_iostream    --- <istream>

       class basic_istringstream  --- <sstream>    // 用来从字符序列中读取数据

           class basic_ostringstream  --- <sstream>    // 用来将数据写入字符序列

           class basic_stringstream  --- <sstream>    // 用来对字符序列进行读写操作

           class basic_ifstream     --- <fstream>    // 读文件流

           class basic_ofstream    --- <fstream>    // 写文件流

           class basic_fstream      --- <fstream>    // 读写文件流

     

           class basic_streambuf          --- <streambuf>     // 流缓冲区

           class basic_stringbuf            --- <sstream>    // 字符序列缓冲区

           class basic_filebuf                --- <fstream>     // 文件流缓冲区

     

           cin    cout     cerr    clog                --- <iostream>

           wcin  wcout  wcerr  wclog              --- <iostream>

     

           ios  istream  ostream  iostream  istringstream  ostringstream  stringstream  

          ifstream  ofstream  fstream  streambuf  stringbuf  filebuf         --- <iosfwd>

     

           wios  wistream  wostream  wiostream  wistringstream  wostringstream  wstringstream  

          wifstream  wofstream  wfstream  wstreambuf  wstringbuf  wfilebuf         --- <iosfwd>

     

    (2)是否使用命名空间

      old version  暴露在全局范围之下,不包含在任何命名空间中。

      new version 包含在std命名空间之中。   //【using namespace std;】

     

    (3)新版本不但包含“文件流”,还包含“字符窜流”(旧版本可能也包含“字符窜流”,但在VC6已经不再支持旧版本的“字符窜流”了。)。

    (4)新版本被国际化了,支持宽字符。

    (5)新版本使用泛型实现。

  • 相关阅读:
    redis概要学习
    http协议格式详解
    浅谈mysql
    linux常用命令
    Linux 程序管理
    认识与分析日志文件
    认识与学习bash
    例行任务管理
    软件安装的三大方法
    关于一些感慨
  • 原文地址:https://www.cnblogs.com/kekec/p/1778943.html
Copyright © 2011-2022 走看看