【C++】输入输出流 ① ( C++ 输入输出流 I/O 流概念 | 输入 和 输出 类型 | 输入 和 输出 流继承结构 | 输入 和 输出 流相关头文件 | iostream 头文件简介 )
  K1I6GvxBEuyy 2023年12月19日 65 0



文章目录

  • 一、C++ 输入输出流 I/O 流概念
  • 1、输入 和 输出 概念
  • 2、输入 和 输出 类型
  • 3、输入 和 输出 流继承结构
  • 4、输入 和 输出 流相关头文件
  • 5、iostream 头文件中的 输入 / 输出 流








一、C++ 输入输出流 I/O 流概念




1、输入 和 输出 概念



输入 和 输出 概念 :

  • 应用程序 的 输入 : 指的是 从 外部输入 将数据 传输给 应用程序 ;
  • 应用程序 的 输出 : 指的是 从 应用程序 将 数据 传输给 外部输出 ;


2、输入 和 输出 类型



上述 输入输出 根据 目的地 的不同 分为 三种类型:

  • 输入和输出 的 目标 是 系统指定的标准设备 : 标准输入输出 , 又称为 标准I/O ; 如 : 键盘 , 显示器 ;
  • istream : 通用输入流 ; 导入 <iostream> 头文件 ;
  • ostream : 通用输出流 ; 导入 <iostream> 头文件 ;
  • iostream : 通用输入 / 输出流 ; 导入 <iostream> 头文件 ;
  • 输入和输出 的 目标 是 磁盘文件 : 文件输入输出 , 又称为 文件 I/O ; 输入就是从磁盘文件读取数据 , 输出就是 写出数据到 磁盘文件 ;
  • ifstream : 文件输入流 ; 导入 <fstream> 头文件 ;
  • ofstream : 文件输出流 ; 导入 <fstream> 头文件 ;
  • fstream : 文件输入 / 输出流 ; 导入 <fstream> 头文件 ;
  • 输入和输出 的 目标 是 内存空间 : 字符串输入输出 , 又称为 串I/O ; 将 字符数组作为 存储空间 , 输入 就是从 字符数组 中读取数据 , 输出就是 写出数据到 字符数组 ;
  • istrstream : 字符串输入流 ; 导入 <strstream > 头文件 ;
  • ostrstream : 字符串输出流 ; 导入 <strstream > 头文件 ;
  • strstream : 字符串输入 / 输出流 ; 导入 <strstream > 头文件 ;


3、输入 和 输出 流继承结构



输入 / 输出 流 的继承结构 ;

下图中 ios 是 输入 / 输出 流 基类 , 含义是 input - output - stream ;

ios 基类 有 2 个子类 , 分别是 istream 输入流 , ostream 输出流 ;

  • 文件输入流 ifstream 继承 istream 类 ;
  • 文件输出流 ofstream 继承 ostream 类 ;
  • 通用输入 / 输出流 iostream 同时继承 istream 和 ostream 类 ;
  • 文件输入 / 输出流 fstream 继承 iostream 类 , 间接同时继承 istream 和 ostream 类 ;

【C++】输入输出流 ① ( C++ 输入输出流 I/O 流概念 | 输入 和 输出 类型 | 输入 和 输出 流继承结构 | 输入 和 输出 流相关头文件 | iostream 头文件简介 )_cin



4、输入 和 输出 流相关头文件



输入 / 输出 流相关头文件简介 :

  • iostream 头文件中定义了对 输入 / 输出 流 操作的基本信息 , 其中定义了 ios,istream,ostream,iostream,istream _withassign, ostream_withassign,iostream_withassign 等类 ;
  • fstream 头文件中定义了 用户管理 的 文件 I/O 操作 ;
  • strstream 头文件中定义了 字符串流 I/O 操作 ;
  • stdiostream 头文件中定义了 混合使用 C 语言 和 C++ 语言 的 I/O 机制 , 使用场景 : C 语言 在 C++ 环境中使用 ;
  • iomanip 头文件中定义了 格式化 I/O 操作 ;


5、iostream 头文件中的 输入 / 输出 流



在 iostream 头文件中 , 提前预定义好了 cin , cout , cerr , clog 等 输入 / 输出 流 ;

  • cin : 标准输入流 , 由 键盘 输入 , 对应 C 语言中的 stdin ;
  • cout : 标准输出流 , 由 屏幕 输出 , 对应 C 语言中的 stdout ;
  • cerr : 标准错误流 , 由 屏幕 输出 , 对应 C 语言中的 stderr ;
  • clog : 标准错误流 , 由 屏幕 输出 , 对应 C 语言中的 stderr ;

导入了 iostream 头文件 , 就可以使用上述 4 个 输入 / 输出 流 ;

__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT istream cin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT ostream cout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT ostream cerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT ostream clog;

上述 输入 / 输出 流 的 istream 和 ostream 的类型如下 :

using istream       = basic_istream<char, char_traits<char>>;
using ostream       = basic_ostream<char, char_traits<char>>;
  • istream 的 类型 basic_istream 的原型如下 : 这是一个类模板 , basic_istream 类虚继承 basic_ios 类 ;
// CLASS TEMPLATE basic_istream
template <class _Elem, class _Traits>
class basic_istream : virtual public basic_ios<_Elem, _Traits> { // control extractions from a stream buffer
  • ostream 的 类型 basic_ostream 的原型如下 :
// CLASS TEMPLATE basic_ostream
template <class _Elem, class _Traits>
class basic_ostream : virtual public basic_ios<_Elem, _Traits> { // control insertions into a stream buffer

basic_ios 的原型如下 , basic_ios 类 也是一个类模板 , 该类 继承 ios_base 类 ;

_STD_BEGIN
// CLASS TEMPLATE basic_ios
template <class _Elem, class _Traits>
class basic_ios : public ios_base { // base class for basic_istream/basic_ostream


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月19日 0

暂无评论

推荐阅读
K1I6GvxBEuyy
作者其他文章 更多