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

news2024/11/16 5:21:47

定义于头文件 <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>

公开成员函数

 构造对象

std::basic_ios<CharT,Traits>::basic_ios

protected:
basic_ios();

(1)

public:
explicit basic_ios( std::basic_streambuf<CharT,Traits>* sb );

(2)

private:
basic_ios(const basic_ios&);

(3)(C++11 前)

public:
basic_ios(const basic_ios& ) = delete;

(C++11 起)

构造新的 basic_ios 对象。

1) 默认构造函数。不初始化内部状态。必须在首次使用对象或析构函数前调用 init() ,否则行为未定义。

2) 以调用init(sb) 初始化内部状态。设置关联流缓冲为 sb

3) C++11 前复制构造函数声明为 private: 且不定义,而在 C++11 中声明为被删除: I/O 流非可复制构造 (CopyConstructible) 。

参数

sb-要关联的流缓冲

 

析构对象

std::basic_ios<CharT,Traits>::~basic_ios

virtual ~basic_ios();

销毁 basic_ios 对象。不进行 rdbuf 上的操作,不销毁它。

注意

此析构函数为 virtual ,因为其基类析构函数 ios_base::~ios_base 为虚。

复制赋值运算符被删除

operator=

受保护成员函数

初始化一个默认构造的std::basic_ios

std::basic_ios<CharT,Traits>::init

protected:
void init( std::basic_streambuf<CharT,Traits>* sb );

设置关联流缓冲为 sb 并初始化内部状态。

后置条件如下:

元素
rdbuf()sb
tie()空指针
rdstate()sb 不是空指针, 则为 goodbit ,否则为 badbit
exceptions()goodbit
flags()skipws | dec
width()​0​
precision()6
fill()widen(' ')
getloc()std::locale() 所返回的值的副本

此成员函数为受保护:一旦知晓实际缓冲区类型,则它为派生流类 std::basic_istream 和 std::basic_ostream 的构造函数所调用。直至调用此函数前,默认构造的 std::basic_ios 每个成员函数(包括析构函数)都引发未定义行为。注意 basic_ios 是虚基类,从而其构造函数不为直接派生类的构造函数所调用,此乃二阶段初始化为必须的原因。

参数

sb-要关联到的流缓冲

 

从另一 std::basic_ios 移动,除了 rdbuf

std::basic_ios<CharT,Traits>::move

protected:
void move( basic_ios& other );

(C++11 起)

protected:
void move( basic_ios&& other );

(C++11 起)

other 的状态替换当前状态,除了关联的 rdbuf 。调用后 other 在合法,但未指定的状态。调用此函数后, rdbuf() 返回 NULL ,而 other.rdbuf() 返回与调用前相同的值,且 other.tie() 返回 0 。

此成员函数受保护:它为导出流类 std::basic_ostream 和 std::basic_istream 的受保护移动构造函数所调用,进而为进一步导出流类,如 std::basic_ofstream 的公开移动构造函数所调用,它们知道如何正确地移动关联流缓冲。

参数

other-转移状态来源的 basic_ios 对象

返回值

(无)

与另一 std::basic_ios 交换,除了 rdbuf

std::basic_ios<CharT,Traits>::swap

protected:
void swap( basic_ios& other ) noexcept;

(C++11 起)

交换 *this 与 other 的状态,除了关联的 rdbuf 对象。 rdbuf() 和 other.rdbuf() 返回与调用前相同的值。

此 swap 函数受保护:它为导出的流类,如 std::basic_ofstream 或 std::basic_istringstream 的成员函数所调用,它们知道如何正确地交换关联的流缓冲。

参数

other-要与之交换状态的 basic_ios 对象

返回值

(无)

替换 rdbuf 而不清除其错误状态

std::basic_ios<CharT,Traits>::set_rdbuf

protected:
void set_rdbuf( std::basic_streambuf<CharT,Traits>* sb );

设置关联流缓冲为 sb 而不清除错误状态。

此成员函数受保护:它为导出流,如 std::basic_ofstream 或 std::basic_istringstream 的移动构造函数所调用,作为构造基类和移动流缓冲后的最终步骤:只有最终导出流类知道如何正确移动流缓冲,但需要令 std::basic_ios 意识到流的新位置,使得其公开成员函数能访问它。

参数

sb-要访问的流缓冲

返回值

(无)

异常

(无)

 

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

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

相关文章

Jenkins pipeline 执行工程目录里的脚本文件

jenkins 工程根目录下有一个脚本文件&#xff0c;如图所示 文件中有一个简单的输出 我们希望在jenkins pipeline 中执行这个脚本文件&#xff0c;如何配置jenkins pipe 命令呢 首先&#xff0c;要明确一点&#xff0c;我们在jenkins pipeline 中&#xff0c;默认是在Jenki…

英语中如何表达各行各业

前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;阿里云社区博客专家 &#x1f609;&#x1f609; &#x1f495; 座右铭&#xff1a; 先努力成长自己&#xff0c;再帮助更多的人,一起加油进…

字符串--从函数返回字符串指针

许多字符串处理函数是不需要返回值的&#xff0c;但实际上它们都被设计成了有返回值的函数。例如字符串赋值函数的函数原型为&#xff1a; char *strcpy(char *str1, const char *str2);字符串连接函数strcat()的函数原型为&#xff1b; char *strcat(char *str1,const char …

springboot+vue+java旅行社旅游网站g748u

使用Spring作为项目管理工具对系统的设计与实现各个模块进行管理,优化代码结构。后台采用Java语言开发,前台页面和后台管理页面使用Bootstrap,JSP,JavaScript,HTML,CSS等技术开发,使用MySql作为数据持久化存储工具对系统的设计与实现的用户等角色权限对应的功能等进行存储。使用…

图像细化原理

1. 图像细化原理 Zhang-Suen 算法原理 Zhang-Suen 算法每运行一次&#xff0c; 需要遍历所有的不为0的像素。在对每个像素&#xff08;P1&#xff09;进行删除或保留的判断时&#xff0c;我们需要关注其周围的8个邻居像素&#xff08;P2, P3, P4, P5, P6, P7, P8&#xff09;的…

012、数据库管理之cluster部署

cluster部署 硬件要求操作系统要求依赖包要求部署的组件 部署集群前置检查安装TiUP组件初始化集群拓扑文件执行部署命令查看集群情况查看已部署的集群情况启动集群验证集群运行状态 启动与停止启动停止 案例讲解测试环境准备环境实施部署 硬件要求 组件CPU内存本地存储网络实例…

大学英语六级考试2022年6月真题|9:00

目录 第一套听力 第一套阅读 选词填空 长篇阅读 仔细阅读 错因 翻译 第一套听力 -7.1 * 1 14/15 -14.2 * 1 9/10 -21.3分 第一套阅读 选词填空 形容词前用副词修饰 remedy vt.修正&#xff1b;纠正 n.解决方法&#xff1b;改进措施 offspring …

TCP三次握手和TCP四次挥手

1. TCP三次握手 三次握手原理&#xff1a; 第1次握手&#xff1a;客户端发送一个带有SYN&#xff08;synchronize&#xff09;标志的数据包给服务端&#xff1b; 第2次握手&#xff1a;服务端接收成功后&#xff0c;回传一个带有SYN/ACK标志的数据包传递确认信息&#xff0c…

Linux 学习记录35(C高级篇)

Linux 学习记录35(C高级篇) 本文目录 Linux 学习记录35(C高级篇)一、linux操作系统1. 文件系统结构2. 常见的linux的发型版本>1. linux发行版和内核版的区别 二、网络配置1. 查看网络是否连接2. 网络配置>1. 保证虚拟机有桥接网络>2. 设置桥接网络>3. 重启网络服务…

MySQL数据库同步方案

一、概述&#xff1a; MYSQL主从同步架构是目前使用最多的数据库架构之一&#xff0c;主从同步使得数据可以从一个数据库服务器复制到其他服务器上&#xff0c;在复制数据时&#xff0c;一个服务器充当主服务器(master)&#xff0c;其余的服务器充当从服务器(slave)。 二、拓扑…

MySQL-SQL视图详细

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

Vue实现表情包评论

1.效果图 2.Vue 2.1 下载emo表情 可以自己去gitee上找&#xff0c;或者直接通过百度云。 链接&#xff1a;https://pan.baidu.com/s/1lsUlLhoAsy_ehQyvdhlrpA 提取码&#xff1a;u9ol &#xff08;如果你不想存在本地&#xff0c;也可以把表情包放在云上&#xff09; 2.2 放…

Linux---查看系统资源占用(top)、磁盘信息监控(df、iostat)、网络状态监控(sar)

1. 查看资源占用&#xff08;top指令&#xff09; 可以通过top命令查看CPU、内存使用情况&#xff0c;类似Windows的任务管理器。 默认每5秒刷新一次&#xff0c;语法&#xff1a;直接输入top即可&#xff0c;按q或ctrl c退出。 第一行&#xff1a; top&#xff1a;命令名称…

Arthas实践使用

1.启动 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 按下前面对应的数字&#xff0c;即可成功启动 2.用途 实时监控&#xff1a;Arthas 可以实时监控 Java 应用程序的各种指标和状态&#xff0c;例如方法执行时间、线程情况、内存使用情况…

《三》TypeScript 中函数的类型定义

TypeScript 允许指定函数的参数和返回值的类型。 函数声明的类型定义&#xff1a;function 函数名(形参: 形参类型, 形参: 形参类型, ...): 返回值类型 {} function sum(x: number, y: number): number {return x y } sum(1, 2) // 正确 sum(1, 2, 3) // 错误。输入多余的或者…

Studio one6要钱吗?新增了哪些功能

Studio One是Pre sounds公司首次研究开发宿主软件的成果。Studio One在其研发环节就吸取了市面上其他宿主软件的优缺点并且做了专业的调研整改。将其他宿主软件的优点经过改良融合在一起&#xff0c;将不足之处进行舍弃或者优化。 Studio One 6是一款强大的音乐编曲软件,可以帮…

【雕爷学编程】Arduino动手做(113)---5110液晶屏模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

6.1面向对象的介绍和内存

学习面向对象内容的三条主线 • Java 类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类 • 面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09; • 其他关键字的使用…

LC-1494. 并行课程 II(状压DP)

1494. 并行课程 II 难度困难116 给你一个整数 n 表示某所大学里课程的数目&#xff0c;编号为 1 到 n &#xff0c;数组 relations 中&#xff0c; relations[i] [xi, yi] 表示一个先修课的关系&#xff0c;也就是课程 xi 必须在课程 yi 之前上。同时你还有一个整数 k 。 在…

SSR渲染--01--初识Nuxt

SSR服务端渲染 SSR服务端渲染&#xff1a;在后端将html页面处理好&#xff0c;前端直接展示&#xff08;可以解决为后端给你传了一个html脚本&#xff0c;全段渲染&#xff09; 为什么要有SSR服务端渲染&#xff1f; 可以解决单页面首屏加载慢的问题&#xff0c;同时有利于用…