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

news2024/11/22 10:26:02

定义于头文件 <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> 的实例。

继承图

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

类型定义
fstreambasic_fstream<char>
wfstreambasic_fstream<wchar_t>

 

成员类型

成员类型定义
char_typeCharT
traits_typeTraits ;若 Traits::char_type 不是 CharT 则程序为病式。
int_typeTraits::int_type
pos_typeTraits::pos_type
off_typeTraits::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_typeCharT
traits_typeTraits
int_typeTraits::int_type
pos_typeTraits::pos_type
off_typeTraits::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
basefielddec|oct|hex 。适用于掩码运算
left左校正(添加填充字符到右):见 std::left
right右校正(添加填充字符到左):见 std::right
internal内部校正(添加填充字符到内部选定点):见 std::internal
adjustfieldleft|right|internal 。适用于掩码运算
scientific用科学记数法生成浮点类型,或若与 fixed 组合则用十六进制记法:见 std::scientific
fixed用定点记法生成浮点类型,或若与 scientific 组合则用十六进制记法:见 std::fixed
floatfieldscientific|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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用命令——dnf命令

在线Linux命令查询工具 dnf 新一代的RPM软件包管理器 补充说明 DNF是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近&#xff0c;它取代了yum&#xff0c;正式成为 Fedora 22 的包管理器。 DNF包管理器克服了YUM包管理器的一些瓶颈&#xff0c;提升…

docker-compose 部署elk,别找了,这是最好的教程

通过docker-compose编排一系列环境进行一键快速部署运行&#xff0c;小白运维神器。 # 安装git命令&#xff1a; yum install -y git git clone https://gitee.com/zhengqingya/docker-compose.git cd docker-compose/Linux环境部署见每个服务下的run.md&#xff1b; eg: Linu…

使用webpack插件webpack-dev-server 出现Cannot GET/的解决办法

问题描述 文档地址深入浅出webpack 使用 DevServer运行webpack&#xff0c;跑起来之后提示Cannot GET/&#xff1a; 解决方案&#xff1a; 查阅官方文档 根据目录结构修改对应的配置&#xff1a; 然后就可以成功访问&#xff1a;

windows安装docker 异常解决

Docker for Windows 安装Docker for Windows报错信息&#xff1a;Docker Desktop requires Windows 10 Pro/Enterprise/Home (18363). 解决方式 1.更新 Windows 系统版本Windows10Upgrade9252.exe 下载地址下载完运行 Windows10Upgrade9252.exe更新完&#xff0c;安装 Docke…

html 计算器界面

其他链接&#xff1a; https://www.freecodecamp.org/news/how-to-build-an-html-calculator-app-from-scratch-using-javascript-4454b8714b98/ https://codepen.io/pen/tour/welcome/start 下面展示一些 内联代码片。 <!DOCTYPE html> <html lang"en">…

使用Spring Initializr方式构建Spring Boot项目

除了可以使用Maven方式构建Spring Boot项目外&#xff0c;还可以通过Spring Initializr方式快速构建Spring Boot项目。从本质上说&#xff0c;Spring lnitializr是一个Web应用&#xff0c;它提供了一个基本的项目结构&#xff0c;能够帮助我们快速构建一个基础的Spring Boot项目…

Effective Java笔记(28)列表优于数组

数组与泛型相比&#xff0c;有两个重要的不同点 。 首先&#xff0c;数组是协变的&#xff08; covariant &#xff09; 。 这个词听起来有点吓人&#xff0c;其实只是表示如果 Sub 为 Super 的子类型&#xff0c;那么数组类型 Sub[ ]就是Super[ ]的子类型。 相反&#xff0c;泛…

HTML 元素的 class 和 id 属性有何区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 唯一性⭐ 选择器权重⭐ JS操作⭐ CSS和JavaScript引用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏…

【网络】自定义协议 | 序列化和反序列化 | 以tcpServer为例

本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例&#xff0c;实现一个自定义协议 阅读本文之前&#xff0c;请先阅读 tcpServer 本文完整代码详见 Gitee 1.重谈tcp 注意&#xff0c;当下所对tcp的描述都是以简单、方便理解起见&#xff0c;后续会对tcp协议进行深入解读 …

威纶通触摸屏插入U盘自动登录,拔出U盘自动注销

威纶通触摸屏官网的 Easybuilder Pro 手册 第十章有该功能的使用方法。 在工程文件中设置好账号密码&#xff0c;启用USB登录。 将 U 盘插入电脑&#xff0c;在 EBPro 的安装路径下找到 Administrator Tools&#xff0c;打开 设置账号密码&#xff0c;储存到U盘&#xff0c;之…

你知道函数栈帧的创建和销毁吗?

文章目录 前言观图有感一、概述二、寄存器三、汇编指令四、函数栈帧的创建4.1 main函数栈帧的创建push ebpmov ebp,espsub esp,0E4hpush ebx / esi /edilea edi,[ebp-24h] 、mov ecx,9、mov eax,0CCCCCCCCh、rep stos dword ptr es:[edi]main函数中变量的创建 4.2 在main函数中…

Focal and Global Knowledge Distillation for Detectors(CVPR 2022)原理与代码解析

paper&#xff1a;Focal and Global Knowledge Distillation for Detectors official implementation&#xff1a;https://github.com/yzd-v/FGD 存在的问题 如图1所示&#xff0c;前景区域教师和学生注意力之间的差异非常大&#xff0c;背景区域则相对较小。此外通道注意力…

【错误记录】Uncaught SyntaxError: Not available in legacy mode

错误记录&#xff1a;Uncaught SyntaxError: Not available in legacy mode 错误描述&#xff1a;在vite脚手架项目当中&#xff0c;使用vue-i18n插件进行国际化多语言时&#xff0c;报错 解决方案&#xff1a; 在引入vue-i18n 处&#xff0c;添加 legacy: false 如果对项目…

玩转Vue3:计算属性和监视属性深度解析

计算属性computed Vue中的计算属性是一种特殊的属性&#xff0c;它可以根据依赖的数据动态计算并返回结果。计算属性的值是通过getter函数计算得到的&#xff0c;当依赖的数据发生变化时&#xff0c;计算属性会自动重新计算并更新视图。计算属性具有缓存机制&#xff0c;只有当…

SSM的知识点考试系统java在线问答试卷管理jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 SSM的知识点考试系统 系统1权限&#xff1a;管理员 …

把大模型装进手机,分几步?

点击关注 文 | 姚 悦 编 | 王一粟 大模型“跑”进手机&#xff0c;AI的战火已经从“云端”烧至“移动终端”。 “进入AI时代&#xff0c;华为盘古大模型将会来助力鸿蒙生态。”8月4日&#xff0c;华为常务董事、终端BG CEO、智能汽车解决方案BU CEO 余承东介绍&#xff0c…

【计算机网络】UDP服务器实现网络聊天室

前言 上一篇文章我们简单了解了一下什么是套接字编程&#xff0c;这篇文章我们利用UDP套接字来实现一个简单的网络聊天室。 编写UDP套接字服务器 成员变量 // 1. socket的id&#xff0c;相当于文件id int _sock; // 2. port uint16_t _port;// 3 一个线程负责收放消息&…

JUC并发、JVM相关

文章目录 JUC并发synchronized锁对象底层原理 synchronized锁升级reentrantlock公平锁和非公平锁可重入锁 / 递归锁 死锁死锁产生条件如何排查死锁?如果解决死锁&#xff1f; LockSupport与中断机制中断机制中断相关的三大API如何中断运行中的线程&#xff1f; LockSupportLoc…

【C++】C++11--- 线程库及详解lock_guard与unique_lock

目录 一、thread类的介绍二、线程函数参数三、 原子性操作库四、lock_guard与unique_lock4.1、mutex的种类4.2 lock_guard4.3 unique_lock 一、thread类的介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如**windows和linux下各有自己…

【css】属性选择器

有些场景中需要在相同元素中获取具有特定属性的元素&#xff0c;比如同为input&#xff0c;type属性有text、button&#xff0c;可以通过属性选择器设置text和button的不同样式。 代码&#xff1a; <style> input[typetext] {width: 150px;display: block;margin-bottom…