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

news2024/11/24 22:49:10
定义于头文件 <ios>
template<

    class CharT,
    class Traits = std::char_traits<CharT>

> class basic_ios : public std::ios_base

std::basic_ios 提供设施,以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios 对象能指涉一个实际的 std::basic_streambuf 对象。

继承图

 

还提供了两个对常见的字符类型的特化:

类型定义
iosbasic_ios<char>
wiosbasic_ios<wchar_t>

成员类型

成员类型定义
char_typeCharT
traits_typeTraits ;若 Traits::char_type 不是 CharT 则程序为病式。
int_typeTraits::int_type
pos_typeTraits::pos_type
off_typeTraits::off_type

公开成员函数

(构造函数)

构造对象
(公开成员函数)

(析构函数)

析构对象
(公开成员函数)

operator=

复制赋值运算符被删除
(公开成员函数)

状态函数

good

检查是否没有发生错误,例如是否可执行I/O操作
(公开成员函数)

eof

检查是否到达了文件末尾
(公开成员函数)

fail

检查是否发生了可恢复的错误
(公开成员函数)

bad

检查是否已发生不可恢复的错误
(公开成员函数)

operator!

检查是否有错误发生(fail() 的同义词)
(公开成员函数)

operator void*operator bool

(C++11 前)(C++11 起)

检查是否没有发生错误(!fail()的同义词)
(公开成员函数)

rdstate

返回状态标志
(公开成员函数)

setstate

设置状态标志
(公开成员函数)

clear

修改状态标志
(公开成员函数)

格式化

copyfmt

复制格式化信息
(公开成员函数)

fill

管理填充字符
(公开成员函数)

杂项

exceptions

管理异常掩码
(公开成员函数)

imbue

设置本地环境
(公开成员函数)

rdbuf

管理相关的流缓冲区
(公开成员函数)

tie

管理绑定的流
(公开成员函数)

narrow

窄化字符
(公开成员函数)

widen

拓宽字符
(公开成员函数)

受保护成员函数

init

初始化一个默认构造的std::basic_ios
(受保护成员函数)

move

(C++11)

从另一 std::basic_ios 移动,除了 rdbuf
(受保护成员函数)

swap

(C++11)

与另一 std::basic_ios 交换,除了 rdbuf
(受保护成员函数)

set_rdbuf

替换 rdbuf 而不清除其错误状态
(受保护成员函数)

继承自 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)

注意

std::basic_ios 的直接实现仅储存以下成员(它们完全取决于模板形参,从而不能为 std::ios_base 的一部分):

  • 用于填充的字符(参见 fill()
  • 绑定的流指针(参见 tie()
  • 关联的流缓冲区指针(参见 rdbuf()

实际实现各异:

Microsoft Visual Studio 储存了这三个成员。

LLVM libc++ 少储存了一个成员:它将 rdbuf 指针储存为 ios_base 的 void* 成员。

GNU libstdc++ 储存了 4 个额外的成员:三个缓存的 facet 和一个用于标识填充是否已初始化的标记。

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

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

相关文章

汽车IVI中控开发入门及进阶(八):视频相关的一些知识点

前言: 视频最早的渊源来源于电视。做汽车仪表/IVI中控,尤其是IVI信息娱乐部分,都要涉及到视频这个知识点,各种概念很多,首先需要明确一条主线,那就是SDTV标清电视->HDTV高清电视->UHDTV超高清电视的一个发展脉络,BT601/656是SDTV标清电视接口,BT1120则对应HDTV高…

SpringCloud:什么是SpringCloud?①

一、什么是SpringCloud 像“云朵”一样聚集起来管理服务。它的定位就是&#xff1a;服务群组间的通讯管理。 二、Spring&#xff0c;SpringBoot以及SpringCloud之间的关系。 Spring是一种引擎式的底层核心-- bean容器思想。后面均是基于它延伸的高级产品。 SpringBoot 专注单体…

为什么中国大公司不开发 Linux 桌面应用?

我们Linux平台C端的业务&#xff0c;也就是给大家提供的Linux的个人版本。目前真的是靠爱发电了&#xff0c;逃&#xff09; 更爱的是&#xff0c;我们不只是提供了X64平台&#xff0c;更是提供了Arm&#xff0c;MIPS64平台的二进制包。 估计国内在Linux平台首发新功能的桌面应…

马尔科夫模型 详解

马尔可夫性 马尔可夫性也叫做无后效性、无记忆性&#xff0c;即是过去只能影响现在&#xff0c;不能影响将来。 在数学上&#xff0c;如果为一个随机过程&#xff0c;则马科尔夫性质可以符号化成如下形式&#xff1a; 从上式可知&#xff0c;过去(s)并不影响将来(th)的状态&a…

Python数据分析讲课笔记02:Numpy基础

文章目录 零、学习目标一、NumPy概述二、多维数组对象三、创建NumPy多维数组1、利用array()函数创建NumPy数组2、创建NumPy数组的其它函数&#xff08;1&#xff09;利用zeros函数创建元素全为0的数组&#xff08;2&#xff09;利用ones函数创建元素全为1的数组&#xff08;3&a…

时间序列异常检测:统计和机器学习方法介绍

在本文中将探索各种方法来揭示时间序列数据中的异常模式和异常值。 时间序列数据是按一定时间间隔记录的一系列观测结果。它经常在金融、天气预报、股票市场分析等各个领域遇到。分析时间序列数据可以提供有价值的见解&#xff0c;并有助于做出明智的决策。 异常检测是识别数…

增加内容曝光、获得更多粉丝 - 「评论发红包」功能

目录 博客发放以及领取红包规则 1. 发布博客评论社区红包规则&#xff1a; 2. 博客评论红包领取规则 如何发红包评论&#xff1f; 发布红包评论益处 不知道大家有没有注意到&#xff0c;我们的「评论发红包」功能已经上线啦&#xff5e; 现在几乎所有的内容 -- 博客&…

管理类联考——英语——技巧篇——完型填空——经典方法论

放弃完型填空&#xff0c;意味着你的阅读部分得分至少能稳定在34分以上(满分40分&#xff0c;要得34分以上意味着至多只能错3道题)&#xff0c;且其他题型也发挥不错&#xff0c;才能确保总分是一个不错的分数。然而&#xff0c;翻译和写作考查的都是硬实力&#xff0c;新题型自…

解释器模式(二十三)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了 备忘录模式(二十二), 如果没有看过, 请观看上一章 一. 解释器模式 引用 菜鸟教程里面 解释器模式介绍: https://www.runoob.com/design-pattern/interpreter-pattern.html 解释器模式&#xff08;Interpreter Patter…

科研热点|影响因子发布时间确定,AHCIESCI将首获IF~

根据科睿唯安&#xff08;Clarivate&#xff09;官方公众号消息&#xff0c;2023年度《期刊引证报告》&#xff08;Journal Citation Reports&#xff0c;简称JCR&#xff09;即将于今年6月底正式发布&#xff01; 本年度JCR将对Web of Science核心合集收录的所有期刊赋予期刊…

C语言指针讲解(适用于初学者)

本文参考视频: https://b23.tv/xLOG6SV,相当于学习笔记&#xff0c;这样概念混淆的时候也可以看看。 一.一级指针 以下图表示的意思是&#xff1a; a的地址为0XA0&#xff0c;定义一个指针p&#xff0c;指向a的地址&#xff0c;计算机也会给p一个内存空间&p:0XB0 图中&a…

【机器学习】十大算法之一 “KNN”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

疑似有用户安装Win11六月更新之后,无法打开Chrome浏览器

近日有网友表示&#xff0c;在安装6月更新的KB5027231之后&#xff0c;无法打开Chrome浏览器了&#xff0c;并且在任务管理器中可以看到相关**ERP系统**进程&#xff0c;但是 Chrome浏览器无法显示。 据了解&#xff0c;微软在本月的补丁星期二活动中&#xff0c;面向Win11发布…

MySQL:多表查询(全面详解)

MySQL&#xff1a;多表查询 前言附录&#xff1a;常用的 SQL 标准有哪些一、一个案例引发的多表连接1、案例说明2、笛卡尔积&#xff08;或交叉连接&#xff09;的理解3、案例分析与问题解决 二、多表查询分类讲解1、等值连接 vs 非等值连接1.1 等值连接1.2 非等值连接 2、自连…

chatgpt赋能python:使用Python生成应用的SEO

使用Python生成应用的SEO 在当今数字化时代中&#xff0c;拥有一个优化良好的应用程序对于任何企业都是至关重要的。 SEO&#xff08;搜索引擎优化&#xff09;是一个崭新且不断发展的领域&#xff0c;它对于企业非常具有建设性。在本文中&#xff0c;我们将学习如何使用Pytho…

CADisplayLink前世今生

本文字数&#xff1a;19803字 预计阅读时间&#xff1a;50分钟 用最通俗的语言&#xff0c;描述最难懂的技术 前情描述 上周同事做code review的时候说到了CADisplayLink的一些变化&#xff0c;感触颇深&#xff0c;提到了接口的一些变动&#xff0c;现在就自己的一些理解加上网…

全志V3S嵌入式驱动开发(spi-nand驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 nand flash相信大家并不陌生&#xff0c;现在很多的固态硬盘上面&#xff0c;其实有很多的nand flash。只不过根据存储单元&#xff0c;分成slc、m…

人机融合与因果关系

苏格兰哲学家大卫.休谟认为因果关系很难被认识&#xff0c;主要是因为他认为我们的认识是通过经验得来的&#xff0c;而经验只能告诉我们事件的先后顺序&#xff0c;而不能告诉我们事件之间的必然联系。他提出了“常见的联想”&#xff08;常见的经验&#xff09;和“原则的联想…

使用 MATLAB 进行气象激光雷达图像分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

状态模式(二十四)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了 解释器模式(二十三), 如果没有看过, 请观看上一章 一. 状态模式 引用 菜鸟教程里面 状态模式介绍: https://www.runoob.com/design-pattern/state-pattern.html 在状态模式&#xff08;State Pattern&#xff09;中&…