当前位置: 首页 > news >正文

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

定义于头文件 <sstream>
template<

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

> class basic_stringbuf : public std::basic_streambuf<CharT, Traits>

 std::basic_stringbuf 是关联字符序列为内存常驻的任意字符序列的 std::basic_streambuf 。能从 std::basic_string 的实例初始化它,或将它做成该类的实例。

std::basic_stringbuf 的典型实现保有一个 std::basic_string 类型对象,或等价的可伸缩序列容器作为数据成员,并将它同时用作受控制字符序列(为 std::basic_streambuf 的六个指针所指向的数组)和关联字符序列(所有输入操作的字符源和输出操作的目标)。

另外,典型的实现保有一个 std::ios_base::openmode 类型的数据成员,以指示流的状态(只读、只写、读写、尾端写等)。

若 overflow() 使用过分配策略,则可存储另外的高水位指针,以跟踪最后初始化的字符。(C++11 起)

亦提供二个对常用字符类型的特化:

类型定义
stringbufbasic_stringbuf<char>
wstringbufbasic_stringbuf<wchar_t>

 

成员类型

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

 

成员函数

公开成员函数

(构造函数)

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

operator=

(C++11)

赋值 basic_stringbuf 对象
(公开成员函数)

swap

(C++11)

交换二个 basic_stringbuf 对象
(公开成员函数)

(析构函数)

[虚] (隐式声明)

析构 basic_stringbuf 对象和其所保有的 string
(虚公开成员函数)

str

替换或获得关联字符串的副本
(公开成员函数)

受保护成员函数

underflow

[虚]

返回输入序列中可用的下一字符
(虚受保护成员函数)

pbackfail

[虚]

回放字符到输出序列中
(虚受保护成员函数)

overflow

[虚]

后附字符到输出序列
(虚受保护成员函数)

setbuf

[虚]

试图以数组替换受控字符序列
(虚受保护成员函数)

seekoff

[虚]

用相对寻址,重定位输入序列、输出序列或两者中的下一位置指针
(虚受保护成员函数)

seekpos

[虚]

用绝对寻址,重定位输入序列、输出序列或两者中的下一位置指针
(虚受保护成员函数)

非成员函数

std::swap(std::basic_stringbuf)

(C++11)

特化 std::swap 算法
(函数模板)

 

继承自 std::basic_streambuf

成员类型

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

成员函数

(析构函数)

[虚]

析构 basic_streambuf 对象
(std::basic_streambuf<CharT,Traits> 的虚公开成员函数)
本地环境

pubimbue

调用 imbue()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

getloc

获得相关本地环境的副本
(std::basic_streambuf<CharT,Traits> 的公开成员函数)
寻位

pubsetbuf

调用 setbuf()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

pubseekoff

调用 seekoff()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

pubseekpos

调用 seekpos()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

pubsync

调用 sync()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)
获取区

in_avail

获得获取区中立即可用的字符数
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

snextc

令输入序列前进,读取一个字符而不再次前进
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

sbumpc

从输入序列读取一个字符并令序列前进
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

stossc

(C++98 中弃用)(C++17 中移除)

令输入序列前进,如同通过调用 sbumpc() 并舍弃结果
(公开成员函数)

sgetc

从输入序列读取一个字符,而不令序列前进
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

sgetn

调用 xsgetn()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)
放置区

sputc

写一个字符到放置区域,并令 next 指针前进
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

sputn

调用 xsputn()
(std::basic_streambuf<CharT,Traits> 的公开成员函数)
回放

sputbackc

在输入序列中放回一个字符
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

sungetc

回移一位输出序列中的下一位置指针
(std::basic_streambuf<CharT,Traits> 的公开成员函数)

受保护成员函数

(构造函数)

构造 basic_streambuf 对象
(受保护成员函数)

operator=

(C++11)

替换 basic_streambuf 对象
(受保护成员函数)

swap

(C++11)

交换二个 basic_streambuf 对象
(受保护成员函数)
本地环境

imbue

[虚]

更改关联的本地环境
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)
寻位

setbuf

[虚]

若容许则以用户定义数组替换缓冲区
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

seekoff

[虚]

用相对寻址重定位输入序列、输出序列或两者中的下一位置指针
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

seekpos

[虚]

用绝对寻址重定位输入序列、输出序列或两者中的下一位置指针
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

sync

[虚]

将缓冲与关联的字符序列同步
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)
获取区

showmanyc

[虚]

若已知,则获得关联输入序列中可用于输入的字符数
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

underflow

[虚]

从关联输入序列读取字符到获取区
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

uflow

[虚]

从输入序列读取字符到获取区,并令下一位置指针前进
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

xsgetn

[虚]

从输入序列读取多个字符
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

ebackgptregptr

返回指向获取区起始、当前字符和末尾的指针
(受保护成员函数)

gbump

令输出序列中的下一位置指针前进
(受保护成员函数)

setg

重定位输出序列的起始、下一位置和终止指针
(受保护成员函数)
放置区

xsputn

[虚]

将多个字符写到输出序列
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

overflow

[虚]

从放置区写入字符到关联的输出序列
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

pbasepptrepptr

返回指向放置区的起始、当前字符和末尾的指针
(受保护成员函数)

pbump

令输出序列中的下一位置指针前进
(受保护成员函数)

setp

重定位输出序列的起始、下一位置和终止指针
(受保护成员函数)
回放

pbackfail

[虚]

将字符放回输入序列,可能修改输入序列
(std::basic_streambuf<CharT,Traits> 的虚受保护成员函数)

相关文章:

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

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbuf…...

flutter开发实战-WidgetsBinding监听页面前台后台退出状态

flutter开发实战-WidgetsBinding监听页面前台后台退出状态 在开发过程中&#xff0c;经常监听页面前台后台退出状态&#xff0c;这里用到了WidgetsBinding 一、WidgetsBinding是什么&#xff1f; WidgetsBinding是Flutter中最重要的Binding之一&#xff0c;它提供了与Widget…...

父进程等待子进程退出 / 僵尸进程孤儿进程

Q&#xff1a;父进程为什么要等待子进程退出&#xff1f; A&#xff1a;回顾创建子进程的目的&#xff0c;就是让子进程去处理一些事情&#xff0c;那么“事情干完了没有”这件事&#xff0c;父进程需要知道并收集子进程的退出状态。子进程的退出状态如果不被收集&#xff0c;…...

【LeetCode 75】第二十六题(394)字符串解码

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们字符串&#xff0c;让我们解码&#xff0c;那么该怎么解码呢&#xff0c;被括号【】包裹起来的字符串需要扩展成括号左边第…...

UNIX网络编程——TCP协议API 基础demo服务器代码

目录 一.TCP客户端API 1.创建套接字 2.connect连接服务器​编辑 3.send发送信息 4.recv接受信息 5.close 二.TCP服务器API 1.socket创建tcp套接字(监听套接字) 2.bind给服务器套接字绑定port,ip地址信息 3.listen监听并创建连接队列 4.accept提取客户端的连接 5.send,r…...

[保研/考研机试] KY163 素数判定 哈尔滨工业大学复试上机题 C++实现

题目链接&#xff1a; 素数判定https://www.nowcoder.com/share/jump/437195121691718831561 描述 给定一个数n&#xff0c;要求判断其是否为素数&#xff08;0,1&#xff0c;负数都是非素数&#xff09;。 输入描述&#xff1a; 测试数据有多组&#xff0c;每组输入一个数…...

iOS_crash文件的获取及符号化(解析)

文章目录 1. 使用 symbolicatecrash 解析 .ips 文件&#xff1a;2. 使用 CrashSymbolicator.py 解析 ips 文件3. 使用 atos 解析 crash 文件4. Helps4.1 .ips 文件获取4.2 .crash 文件获取4.3 获取 .dSYM 和 .app 文件4.4 使用 dwarfdump 查询 uuid 5. Tips6. 总结 1. 使用 sym…...

STM32定时器TIM控制

一、CubeMX的设置 1、新建工程&#xff0c;进行基本配置 2、配置定时器TIM2 1&#xff09;定时器计算公式&#xff1a;&#xff08;以下两条公式相同&#xff09; Tout ((ARR1) * PSC1)) / Tclk TimeOut ((Prescaler 1) * (Period 1)) / TimeClockFren Tout TimeOut&…...

网络请求中,token和cookie有什么区别

HTTP无状态&#xff0c;每次请求都要携带cookie&#xff0c;以帮助识别用户身份&#xff1b; 服务端也可以向客户端set-cookie&#xff0c;cookie大小限制为4kb&#xff1b; cookie默认有跨域限制&#xff0c;不跨域共享和传递&#xff0c;例如&#xff1a; 现代浏览器开始禁…...

Javaweb_xml

文章目录 1.xml是什么&#xff1f;2.xml的用途 1.xml是什么&#xff1f; xml 是可扩展的标记性语言 2.xml的用途 1、用来保存数据&#xff0c;而且这些数据具有自我描述性 2、它还可以做为项目或者模块的配置文件 3、还可以做为网络传输数据的格式&#xff08;现在 JSON 为主…...

http相关知识点

文章目录 长链接http周边会话保持方案1方案2 基本工具postmanFiddlerFiddler的原理 长链接 一张网页实际上可能会有多种元素组成&#xff0c;这也就说明了网页需要多次的http请求。可由于http是基于TCP的&#xff0c;而TCP创建链接是有代价的&#xff0c;因此频繁的创建链接会…...

【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析

【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析 一、EventHub.cpp 监听 /dev/input/event0 节点流程二、EventHub.cpp 读取 /dev/input/event0 节点数据流程系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总…...

走出迷宫(多组输入bfs)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小明现在在玩一个游戏&#xff0c;游戏来到了教学关卡&#xff0c;迷宫是一个N*M的矩阵。 小明的起点在地图中用“S”来表示&#xff0c;终点用“E”来表示&#xff0c;障碍物用“#…...

Linux系统编程-终端、进程组、会话

一、终端的概念 在UNIX系统中&#xff0c;用户通过终端登录系统后得到一个Shell进程&#xff0c;这个终端成为Shell进程的控制终端&#xff08;Controlling Terminal&#xff09;&#xff0c;进程中&#xff0c;控制终端是保存在PCB中的信息&#xff0c;而fork会复制PCB中的信息…...

Linux部分文件操作记录

问题描述 多级文件夹下&#xff0c;有多个同名文件&#xff0c;以及其他无关文件&#xff0c;为了减轻体量&#xff0c;遍历目录&#xff0c;只保留对应文件 首先open terminal here find . -type f \( ! -name algo_imu.bin -a ! -name post_gnss_only_error.log -a ! -name…...

Android系统-进程-Binder2-Java层

引言&#xff1a; 对于Android系统&#xff0c;一般是从java层到native层&#xff0c;再到kernel驱动层&#xff0c;形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构&#xff0c;从java层到底层驱动层是怎么样的一个架构和原理的呢&#xff1f; 概念与…...

体渲染原理及WebGL实现【Volume Rendering】

体渲染&#xff08;Volume Rendering&#xff09;是NeRF神经场辐射AI模型的基础&#xff0c;与传统渲染使用三角形来显示 3D 图形不同&#xff0c;体渲染使用其他方法&#xff0c;例如体积光线投射 (Volume Ray Casting)。本文介绍体渲染的原理并提供Three.js实现代码&#xff…...

VUE3组件

组件基础 {#components-basics} 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行单独的思考。在实际应用中&#xff0c;组件常常被组织成层层嵌套的树状结构&#xff1a; 这和我们嵌套 HTML 元素的方式类似&#xff0c;Vue 实现了自己的组件…...

【iOS】autoreleasepool

来说一下最近在了解的autoreleasepool吧&#xff0c;我们可能平时书写过许多脑残代码&#xff0c;其有很多的缺陷但是我们可能当时学的比较浅就也不太了解&#xff0c;就像下面这样的&#xff1a; for (int i 0; i < 1000000; i) {NSNumber *num [NSNumber numberWithInt…...

0基础学习VR全景平台篇 第80篇:Insta360 影石如何直播推流

一、下载Insta360 Pro APP 1、手机进入Insta360官网Insta360 | Action Cameras | 360 Cameras | VR Cameras&#xff0c;页面往下滑动到Insta360 Pro2相机处&#xff0c;点击相机图片进入详情页。详情页继续下滑到到手机APP处&#xff0c;根据自己的手机系统选择对应的客户端进…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...