【STL】iostream编程:iostreams 约定

本文介绍一下 iostream 库头文件规范。


目录

  • 1 规范
    • 1.1 基础控制台 I\O:<iostream\>
    • 1.2 文件、字符串流对应头文件
    • 1.3 其余头文件定位
  • 2 各个头文件用途速查表

1 规范

iostream 系列头文件负责实现文本与编码格式之间的转换,同时提供对外置文件的读写能力,整套头文件清单如下:

  • <fstream>
  • <iomanip>
  • <ios>
  • <iosfwd>
  • <iostream>
  • <istream>
  • <ostream>
  • <sstream>
  • <streambuf>
  • <strstream>

1.1 基础控制台 I\O:<iostream>

最基础的控制台输入输出只需要引入 <iostream> 头文件:

  • 借助cin / 宽字符版本 wcin读取标准输入,读取规则由 basic_istream 类规定;
  • 借助cout / 宽字符版本 wcout输出标准打印内容,输出规则由 basic_ostream 类规定;
  • 输入、输出共用的格式配置由 basic_ios 统一管理;各类流操纵符(manipulator)依托读写操作修改这些格式参数;

1.2 文件、字符串流对应头文件

  • <fstream>:提供文件流类,通过文件名打开磁盘文件,复用一模一样的 iostream 读写语法操作文件;
  • <sstream>:用于 std::string 和流数据互相转换(内存字符串流);
  • <strstream>:面向老式 C语言字符数组(char*)实现流交互(现已被 sstream 逐步淘汰);

1.3 其余头文件定位

剩下的几个头文件属于 iostream 的底层支撑组件,普通业务开发几乎不会直接使用,一般只有深度自定义流、开发底层封装工具的高阶开发者才会用到。

2 各个头文件用途速查表

头文件核心作用使用场景
<iostream>标准控制台 cin / cout日常打印、键盘输入(最常用)
<fstream>ifstream / ofstream / fstream 文件读写读写本地 txt、二进制文件
<sstream>stringstream 字符串流字符串拆分、数字字符串互转
<iomanip>格式控制操纵符 setw、setprecision 等控制输出精度、对齐、进制
<ios> / <iosfwd>流状态、基础类型前置声明底层开发使用
<istream> / <ostream>基础输入 / 输出流父类自定义流重载才需要引入
<streambuf>流缓冲区底层实现定制内存缓冲、高级改造
<strstream>老式 C字符串流老旧项目兼容,新项目禁止使用