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

定义于头文件 <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 和一个用于标识填充是否已初始化的标记。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值