c++11 标准模板(STL)(std::basic_stringstream)(三)

news2024/11/18 13:28:05
定义于头文件 <sstream>
template<

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

> class basic_stringstream;
(C++11 前)
template<

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

> class basic_stringstream;
(C++11 起)

类模板 std::basic_stringstream 实现基于字符串的流上的输入与输出操作。它等效地存储一个 std::basic_string 的实例,并在其上进行输入与输出操作。

在低层,该类实际上包装 std::basic_stringbuf 的未处理字符串设备到 std::basic_iostream 的高层接口中。提供到独有 std::basic_stringbuf 成员的完整接口。

亦为常用字符类型定义二个特化:

类型定义
stringstreambasic_stringstream<char>
wstringstreambasic_stringstream<wchar_t>

成员函数

移动字符串流

std::basic_stringstream::operator=

basic_stringstream& operator=( basic_stringstream&& other );

(C++11 起)

移动赋值字符串流 other*this ,等效的移动赋值 std::basic_iostream 基类和关联的 std::basic_stringbuf 。

注意,基类移动赋值交换 *this 与 other 间的所有流状态变量(除了 rdbuf )。

参数

other-移动来源的字符串流

返回值

*this

 调用示例

#include <sstream>
#include <string>
#include <iostream>

int main()
{
    //3) 以 str 的副本为底层字符串设备的初始内容。
    std::string string1 = "I am a handsome programmer";
    std::basic_stringstream<char>
    basic_stringstream1(string1, std::ios_base::in | std::ios_base::out);
    std::cout << "basic_stringstream1: "
              << basic_stringstream1.str() << std::endl;
    std::cout << "rdstate: " << basic_stringstream1.rdstate() << std::endl;

    std::string string2 = "I am a super handsome guy";
    std::basic_stringstream<char>
    basic_stringstream2(string2, std::ios_base::in | std::ios_base::out);
    std::cout << "basic_stringstream2: "
              << basic_stringstream2.str() << std::endl;
    basic_stringstream2.setstate(std::ios_base::badbit);
    std::cout << "rdstate: " << basic_stringstream2.rdstate() << std::endl;

    return 0;
}

输出

返回底层未处理的字符串设备对象

std::basic_stringstream::rdbuf

std::basic_stringbuf<CharT, Traits, Allocator>* rdbuf() const;

返回指向底层未处理字符串设备对象的指针。

参数

(无)

返回值

指向底层未处理字符串设备对象的指针。

调用示例

int main()
{
    //3) 以 str 的副本为底层字符串设备的初始内容。
    std::string string1 = "I am a handsome programmer";
    std::basic_stringstream<char>
    basic_stringstream1(string1, std::ios_base::in | std::ios_base::out);
    std::cout << "basic_stringstream1: " << basic_stringstream1.str() << std::endl;
    //返回指向底层未处理字符串设备对象的指针。
    std::cout << "basic_stringstream1: "
              << static_cast<void*>(basic_stringstream1.rdbuf()) << std::endl;

    return 0;
}

输出

字符串操作

获取或设置底层字符串设备对象的内容

std::basic_stringstream<CharT,Traits,Allocator>::str

std::basic_string<CharT,Traits,Allocator> str() const;

(1)

void str(const std::basic_string<CharT,Traits,Allocator>& new_str);

(2)

管理底层字符串对象的内容。

1) 返回底层字符串的副本,如同通过调用 rdbuf()->str() 。

2) 替换底层字符串,如同通过调用 rdbuf()->str(new_str) 。

参数

new_str-底层字符串的新内容

返回值

1) 底层字符串对象的副本。

2) (无)

注意

str 所返回的底层字符串副本是将于表达式结尾析构的临时对象,故在 str() 的结果上直接调用 c_str() (例如 auto *ptr = out.str().c_str(); 中)导致悬垂指针。

 调用示例

int main()
{
    //3) 以 str 的副本为底层字符串设备的初始内容。
    std::string string1 = "I am a handsome programmer";
    std::basic_stringstream<char>
    basic_stringstream1(string1, std::ios_base::in | std::ios_base::out);
    //1) 返回底层字符串的副本,如同通过调用 rdbuf()->str() 。
    std::cout << "basic_stringstream1: "
              << basic_stringstream1.str() << std::endl;

    //2) 替换底层字符串,如同通过调用 rdbuf()->str(new_str) 。
    std::string string2 = "I am a super handsome guy";
    basic_stringstream1.str(string2);
    std::cout << "basic_stringstream1: "
              << basic_stringstream1.str() << std::endl;

    return 0;
}

输出

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

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

相关文章

解决Linux Ubuntu上安装RabbitMQ服务后的公网远程访问问题,借助cpolar内网穿透技术

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

使用Windbg动态调试排查软件启动不了的问题

目录 1、问题说明 2、初步分析 3、使用Windbg启动程序进行动态调试 4、进一步分析 5、何时使用Windbg静态分析&#xff1f;何时使用Windbg进行动态调试&#xff1f; 6、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&…

Java_理解方法调用

理解方法调用 首先什么是隐式参数 --->隐式参数是调用该方法的对象本身。 接下来方法的名称和参数列表被称为方法的签名&#xff08;signature&#xff09;。在Java中&#xff0c;方法的签名由方法的名称和参数列表组成&#xff0c;用于唯一标识一个方法。返回类型不是签名的…

windows 10通过IP连接hp打印机192.168.8.115

一直点下一步。完成后要等一会儿才出现在列表里。

Win7下设置“定时关机”的方法

【Win7下设置定时关机的方法】 ●【所有程序】→【附件】→【系统工具】→【任务计划程序】 ● 右键单击&#xff0c;选择【创建基本任务】&#xff0c;然后在【任务名称】中填自定义名称&#xff0c;如“定时关机” ● 之后&#xff0c;按照下面各图的提示进行“任务触发器”…

MySQL left join 和 left outer join 区别

先说结论: left join 和 left outer join 的结果是一致的。 我不知道各位大神是怎么测试的&#xff0c;网上面就说两个不一样&#xff0c;我A、B表都是有重复数据的&#xff0c;为啥结果是一样的。 表A 表B 左连接 SELECT ta.*,tb.Result ResultB FROM TableA ta LEFT JOIN…

Linux常用命令——cupsenable命令

在线Linux命令查询工具 cupsenable 启动指定的打印机 补充说明 cupsenable命令用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E&#xff1a;当连接到服务器时强制使用加密&#xff1b; -U&#xff1a;指定连接服务器时使用的用户名&#xff1b; -u&#xff…

pip安装第三方库与设置

pip的使用 假如下载numpy pip install numpypypi 镜像源「配置」 常用镜像源列表 官方&#xff1a;https://pypi.org/simple 百度&#xff1a;https://mirror.baidu.com/pypi/simple/ 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里&#xff1a;https://m…

JVM介绍

一、介绍 1. JVM是什么 JVM是Java Virtual Machine的缩写&#xff0c;即咱们经常提到的Java虚拟机。虚拟机是一种抽象化的计算机&#xff0c;有着自己完善的硬件架构&#xff0c;如处理器、堆栈等&#xff0c;具体有什么咱们不做了解。目前我们只需要知道想要运行Java文件&…

sqlibs安装及复现

sqlibs安装 安装phpstudy后&#xff0c;到github上获取sqlibs源码 sqli-labs项目地址—Github获取&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 在phpstudy本地文件中的Apache目录中解压上方下载的源码。 将sq…

沃尔玛,eBay买家号成号率低如何解决?

eBay是一个很庞大的系统&#xff0c;买家号必须在本土环境才会安全。要想养出高权重的买家号&#xff0c;需要花大量的时间跟精力&#xff0c;一旦养出一批高质量且时间周期较长的买家号&#xff0c;就可以做很多事情&#xff0c;比如可以帮产品上排名&#xff0c;提高产品的权…

01_es安装和入门体验

01_es安装和入门体验 概述Elasticsearch 是什么全文搜索引擎 1. 安装环境介绍单机 & 集群集群 Cluster节点 Node 1.1 linux 单机安装1.2 集群安装1.3 window下安装 2. postMan 体验3.java客户端体验3.1 资源链接和关闭3.2 索引相关操作3.3 文档基本操作3.4 查询相关操作 概…

前端基础(Vue Router路由的使用)

前言&#xff1a;很多网站都有页面的跳转&#xff0c;那具体页面跳转是怎样实现的&#xff1f;今天学习前端SPA(Single page Application)单页面应用&#xff0c;不反复请求后端资源&#xff0c;而是通过路由实现页面的跳转。 目录 路由的创建 main.ts导入路由 App.vue文件 …

【数据库】关系模型介绍+形式化关系查询语言

目录 第2章 关系模型介绍 2.1 关系数据库的结构 关系 2.2 数据库模式 2.3 码 2.4 模式图 大学数据库的模式图&#xff01;&#xff01;&#xff01; 大学数据库关系模式&#xff01;&#xff01;&#xff01; 2.5 关系查询语言 2.6 关系运算 2. 7 总结 第6章 形式化…

OceanBase社区版4.x核心技术解密

数字化时代&#xff0c;各行各业的数据量呈现爆发式增长&#xff0c;对于海量数据价值的挖掘和应用&#xff0c;正成为推动创新的主要力量&#xff0c;与此同时&#xff0c;数据计算复杂度正在提升。在此背景下&#xff0c;对于数据处理的基石数据库而言&#xff0c;正面临市场…

基于Springboot实现的Echarts图表

概述 ECharts是百度开源的一个前端组件。它是一个使用 JavaScript 实现的开源可视化库&#xff0c;可以流畅的运行在 PC 和移动设备上&#xff0c;兼容当前绝大部分浏览器&#xff08;IE8/9/10/11&#xff0c;Chrome&#xff0c;Firefox&#xff0c;Safari等&#xff09;&…

02_nodejs开发环境安装

02 【nodejs开发环境安装】 1.版本介绍 在命令窗口中输入 node -v 可以查看版本0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性&#xff08;比4.x多些&#xff09;&#xff0c;属于过渡产品&#xff0c;现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特…

Matlab图像处理-图像反转

图像反转 图像反转变化实质上是将图像明暗两种灰度进行互补运算后互换处理&#xff0c;理论上是由反比变换所得&#xff0c;其表达式为&#xff1a; sL−1−r 其中L−1为该灰度级中最大灰度值。 在MATLAB中&#xff0c;常使用imadjust()或imco…

12 mysql char/varchar 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 char 类类型的相关数据的存储 …

python常用包/库

目录 NumpypandasMatplotlibSeabornScikit-learnKerasOpenCV Numpy NumPy库是Python中一个广泛使用的数学库&#xff0c;主要用于处理多维数组和矩阵。它提供了许多用于数组操作的功能&#xff0c;包括数组创建、索引、切片、广播、数学运算、统计分析等。NumPy库还提供了许多…