C++”流”的那些事儿

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

old version

C++"流"的那些事儿

 

new version

C++"流"的那些事儿

新旧版本的区别:

(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)新版本使用泛型实现。

原文链接: https://www.cnblogs.com/kekec/archive/2010/07/16/1778943.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++"流"的那些事儿

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/12757

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 上午11:55
下一篇 2023年2月7日 上午11:57

相关推荐