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

  • 相关阅读:
    C# String 前面不足位数补零的方法
    bootstrap-wysiwyg这个坑
    PRECONDITION_FAILED
    JdbcTemplate in()传参
    Mysql Specified key was too long; max key length is 767 bytes
    获取两日期之前集合并转为String类型的集合
    SQL里的concat() 以及group_concat() 函数的使用
    spring boot如何打印mybatis的执行sql
    MockMvc 进行 controller层单元测试 事务自动回滚 完整实例
    找到 Confluence 6 的日志和配置文件
  • 原文地址:https://www.cnblogs.com/kekec/p/1778943.html
Copyright © 2011-2022 走看看