c++11 标准模板(STL)(std::basic_fstream)(一)

定义于头文件 <fstream>

|---------------------------------------------------------------------------------------------------------------------------------------|
| template< class CharT, class Traits = std::char_traits<CharT> > class basic_fstream : public std::basic_iostream<CharT, Traits> |

类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_iostream 的高层接口赋予基于文件的缓冲( std::basic_filebuf )。

std::basic_fstream 的典型实现只保有一个非导出数据成员: std::basic_filebuf<CharT, Traits> 的实例。

继承图

亦定义二个对于常用字符类型的特化:

|------------|--------------------------|
| 类型 | 定义 |
| fstream | basic_fstream<char> |
| wfstream | basic_fstream<wchar_t> |

成员类型

|---------------|--------------------------------------------------|
| 成员类型 | 定义 |
| char_type | CharT |
| traits_type | Traits ;若 Traits::char_type 不是 CharT 则程序为病式。 |
| int_type | Traits::int_type |
| pos_type | Traits::pos_type |
| off_type | Traits::off_type |

成员函数

|---------------------|------------------------------------------|
| (构造函数) | 构造文件流 (公开成员函数) |
| (析构函数) [虚] (隐式声明) | 析构 basic_fstream 和关联的缓冲区,并关闭文件 (虚公开成员函数) |
| operator= (C++11) | 移动文件流 (公开成员函数) |
| swap (C++11) | 交换二个文件流 (公开成员函数) |
| rdbuf | 返回底层未处理的文件设备对象 (公开成员函数) |
| ##### 文件操作 ||
| is_open | 检查流是否有关联文件 (公开成员函数) |
| open | 打开文件,并将它与流关联 (公开成员函数) |
| close | 关闭关联文件 (公开成员函数) |

非成员函数

|---------------------------------------|------------------------|
| std::swap(std::basic_fstream) (C++11) | 特化 std::swap 算法 (函数模板) |

继承自 std::basic_istream

成员函数

|--------------|--------------------------------------------------------------------------|
| ##### 有格式输入 ||
| operator>> | 提取带格式数据 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| ##### 无格式输入 ||
| get | 从流中读并取走(移除类似指针向下一个元素移动)一个字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| peek | 仅读出但不取走(不移除类似指针并未移动)一个字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| unget | 撤销流中刚取走(移除,类似指针向后退回一个位置)的字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| putback | 往输入流中退回一个字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| getline | 一直读并取走字符,直至找到给定字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| ignore | 读且取走并舍弃字符,直至发现给定字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| read | 读并取走一块字符 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| readsome | 读并取走已经可用的字符块 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| gcount | 返回上次无格式输出操作所取走的字符数量 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| ##### 寻位 ||
| tellg | 返回输入位置指示器 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| seekg | 设置输入位置指示器 (std::basic_istream<CharT,Traits> 的公开成员函数) |
| ##### 杂项 ||
| sync | 与底层存储设备同步 (std::basic_istream<CharT,Traits> 的公开成员函数) |

成员类

|--------|-------------------------------------------------------------|
| sentry | 实现为输出操作准备流的基本逻辑 (std::basic_istream<CharT,Traits> 的公开成员类) |

继承自 std::basic_ostream

成员函数

|--------------|--------------------------------------------------------|
| ##### 有格式输出 ||
| operator<< | 插入带格式数据 (std::basic_ostream<CharT,Traits> 的公开成员函数) |
| ##### 无格式输出 ||
| put | 插入字符 (std::basic_ostream<CharT,Traits> 的公开成员函数) |
| write | 插入字符块 (std::basic_ostream<CharT,Traits> 的公开成员函数) |
| ##### 寻位 ||
| tellp | 返回输出位置指示器 (std::basic_ostream<CharT,Traits> 的公开成员函数) |
| seekp | 设置输出位置指示器 (std::basic_ostream<CharT,Traits> 的公开成员函数) |
| ##### 杂项 ||
| flush | 与底层存储设备同步 (std::basic_ostream<CharT,Traits> 的公开成员函数) |

成员类

|--------|-------------------------------------------------------------|
| sentry | 为输出操作实现流准备的基本逻辑 (std::basic_ostream<CharT,Traits> 的公开成员类) |

继承自 std::basic_ios

成员类型

|---------------|------------------|
| 成员类型 | 定义 |
| char_type | CharT |
| traits_type | Traits |
| int_type | Traits::int_type |
| pos_type | Traits::pos_type |
| off_type | Traits::off_type |

成员函数

|-------------------------------------------------|------------------------------------------------------------------|
| ##### 状态函数 ||
| good | 检查是否没有发生错误,例如是否可执行I/O操作 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| eof | 检查是否到达了文件末尾 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| fail | 检查是否发生了可恢复的错误 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| bad | 检查是否已发生不可恢复的错误 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| operator! | 检查是否有错误发生(fail() 的同义词) (std::basic_ios<CharT,Traits> 的公开成员函数) |
| operator void*operator bool (C++11 前)(C++11 起) | 检查是否没有发生错误(!fail()的同义词) (std::basic_ios<CharT,Traits> 的公开成员函数) |
| rdstate | 返回状态标志 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| setstate | 设置状态标志 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| clear | 修改状态标志 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| ##### 格式化 ||
| copyfmt | 复制格式化信息 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| fill | 管理填充字符 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| ##### 杂项 ||
| exceptions | 管理异常掩码 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| imbue | 设置本地环境 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| rdbuf | 管理相关的流缓冲区 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| tie | 管理绑定的流 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| narrow | 窄化字符 (std::basic_ios<CharT,Traits> 的公开成员函数) |
| widen | 拓宽字符 (std::basic_ios<CharT,Traits> 的公开成员函数) |

继承自 std::ios_base

成员函数

|------------------------|---------------------------------------------------------------------|
| ##### 格式化 ||
| flags | 管理格式标志 (std::ios_base 的公开成员函数) |
| setf | 设置特定格式标志 (std::ios_base 的公开成员函数) |
| unsetf | 清除特定格式的标志 (std::ios_base 的公开成员函数) |
| precision | 管理浮点操作的精度 (std::ios_base 的公开成员函数) |
| width | 管理域的宽度 (std::ios_base 的公开成员函数) |
| ##### 本地环境 ||
| imbue | 设置本地环境 (std::ios_base 的公开成员函数) |
| getloc | 返回当前本地环境 (std::ios_base 的公开成员函数) |
| ##### 内部可扩展数组 ||
| xalloc [静态] | 返回能安全用作 pword() 和 iword() 下标的程序范围内独有的整数 (std::ios_base 的公开静态成员函数) |
| iword | 如果有必要的话,调整私有存储的大小,并且访问位于提供的下标的long元素 (std::ios_base 的公开成员函数) |
| pword | 若需要则重置私有存储的大小,并访问位于指定下标的 void* 元素 (std::ios_base 的公开成员函数) |
| ##### 杂项 ||
| register_callback | 注册事件回调函数 (std::ios_base 的公开成员函数) |
| sync_with_stdio [静态] | 设置C++和C的IO库是否可以互操作 (std::ios_base 的公开静态成员函数) |
| ##### 成员类 ||
| failure | 流异常 (std::ios_base 的公开成员类) |
| Init | 初始化标准流对象 (std::ios_base 的公开成员类) |

|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ### 成员类型和常量 ||
| 类型 | 解释 |
| openmode | 流打开模式类型 亦定义下列常量: |--------|-------------| | 常量 | 解释 | | app | 每次写入前寻位到流结尾 | | binary | 以二进制模式打开 | | in | 为读打开 | | out | 为写打开 | | trunc | 在打开时舍弃流的内容 | | ate | 打开后立即寻位到流结尾 | (typedef) |
| fmtflags | 格式化标志类型 亦定义下列常量: |-------------|-----------------------------------------------------| | 常量 | 解释 | | dec | 为整数 I/O 使用十进制底:见 std::dec | | oct | 为整数 I/O 使用八进制底:见 std::oct | | hex | 为整数 I/O 使用十六进制底:见 std::hex | | basefield | dec|oct|hex 。适用于掩码运算 | | left | 左校正(添加填充字符到右):见 std::left | | right | 右校正(添加填充字符到左):见 std::right | | internal | 内部校正(添加填充字符到内部选定点):见 std::internal | | adjustfield | left|right|internal 。适用于掩码运算 | | scientific | 用科学记数法生成浮点类型,或若与 fixed 组合则用十六进制记法:见 std::scientific | | fixed | 用定点记法生成浮点类型,或若与 scientific 组合则用十六进制记法:见 std::fixed | | floatfield | scientific|fixed 。适用于掩码运算 | | boolalpha | 以字母数字格式插入并释出 bool 类型:见 std::boolalpha | | showbase | 生成为整数输出指示数字基底的前缀,货币 I/O 中要求现金指示器:见 std::showbase | | showpoint | 无条件为浮点数输出生成小数点字符:见 std::showpoint | | showpos | 为非负数值输出生成 + 字符,见 std::showpos | | skipws | 在具体输入操作前跳过前导空白符:见 std::skipws | | unitbuf | 在每次输出操作后冲入输出:见 std::unitbuf | | uppercase | 在具体输出的输出操作中以大写等价替换小写字符:见 std::uppercase | (typedef) |
| iostate | 流状态类型 亦定义下列常量: |---------|---------------------| | 常量 | 解释 | | goodbit | 无错误 | | badbit | 不可恢复的流错误 | | failbit | 输入/输出操作失败(格式化或提取错误) | | eofbit | 关联的输出序列已抵达文件尾 | (typedef) |
| seekdir | 寻位方向类型 亦定义下列常量: |-----|-------------| | 常量 | 解释 | | beg | 流的开始 | | end | 流的结尾 | | cur | 流位置指示器的当前位置 | (typedef) |
| event | 指定事件类型 (枚举) |
| event_callback | 回调函数类型 (typedef) |

相关推荐
小飞猪Jay2 小时前
C++面试速通宝典——13
jvm·c++·面试
rjszcb3 小时前
一文说完c++全部基础知识,IO流(二)
c++
小字节,大梦想3 小时前
【C++】二叉搜索树
数据结构·c++
吾名招财3 小时前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
我是哈哈hh4 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
憧憬成为原神糕手4 小时前
c++_ 多态
开发语言·c++
郭二哈4 小时前
C++——模板进阶、继承
java·服务器·c++
挥剑决浮云 -4 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
丶Darling.4 小时前
LeetCode Hot100 | Day1 | 二叉树:二叉树的直径
数据结构·c++·学习·算法·leetcode·二叉树
labuladuo5205 小时前
Codeforces Round 977 (Div. 2) C2 Adjust The Presentation (Hard Version)(思维,set)
数据结构·c++·算法