C++”流”的那些事兒

來源:互聯網
上載者:User

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)新版本使用泛型實現。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.