当前位置: 首页 > 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;根据自己的手机系统选择对应的客户端进…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...