stringstream常见用法介绍
本文主要介绍 C++ 中 stringstream 类的常见用法。
1 概述
<sstream> 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。
<sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言,<sstream> 更加安全、自动和直接。
2 代码示例
2.1 数据类型转换
这里展示一个代码示例,该示例介绍了将 int 类型转换为 string 类型的过程。示例代码(stringstream_test1.cpp)如下:
#include <string>
#include <sstream>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
stringstream sstream;
string strResult;
int nValue = 1000;
// 将int类型的值放入输入流中
sstream << nValue;
// 从sstream中抽取前面插入的int类型的值,赋给string类型
sstream >> strResult;
cout << "[cout]strResult is: " << strResult << endl;
printf("[printf]strResult is: %s\n", strResult.c_str());
return 0;
}
编译并执行上述代码,结果如下:
2.2 多个字符串拼接
本示例介绍在 stringstream 中存放多个字符串,实现多个字符串拼接的目的(其实完全可以使用 string 类实现),同时,介绍 stringstream 的清空方法。
示例代码(stringstream_test2.cpp)如下:
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
stringstream sstream;
// 将多个字符串放入 sstream 中
sstream << "first" << " " << "string,";
sstream << " second string";
cout << "strResult is: " << sstream.str() << endl;
// 清空 sstream
sstream.str("");
sstream << "third string";
cout << "After clear, strResult is: " << sstream.str() << endl;
return 0;
}
编译并执行上述代码,结果如下:
从上述代码执行结果能够知道:
- 可以使用 str() 方法,将 stringstream 类型转换为 string 类型;
- 可以将多个字符串放入 stringstream 中,实现字符串的拼接目的;
- 如果想清空 stringstream,必须使用 sstream.str(""); 方式;clear() 方法适用于进行多次数据类型转换的场景。详见示例2.3。
2.3 stringstream的清空
清空 stringstream 有两种方法:clear() 方法以及 str("") 方法,这两种方法有不同的使用场景。str("") 方法的使用场景,在上面的示例中已经介绍了,这里介绍 clear() 方法的使用场景。示例代码(stringstream_test3.cpp)如下:
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
stringstream sstream;
int first, second;
// 插入字符串
sstream << "456";
// 转换为int类型
sstream >> first;
cout << first << endl;
// 在进行多次类型转换前,必须先运行clear()
sstream.clear();
// 插入bool值
sstream << true;
// 转换为int类型
sstream >> second;
cout << second << endl;
return 0;
}
编译并执行上述代码,结果如下:
注意:在本示例涉及的场景下(多次数据类型转换),必须使用 clear() 方法清空 stringstream,不使用 clear() 方法或使用 str("") 方法,都不能得到数据类型转换的正确结果。下图分别是未使用 clear() 方法、使用 str("") 方法时的运行结果:
stringstream常见用法介绍相关推荐
- 怎么用计算机打出cpdd,网络语cpdd是什么梗啥意思 cpdd出处来源哪里常见用法介绍...
原标题:网络语cpdd是什么梗啥意思 cpdd出处来源哪里常见用法介绍 [海峡网] 随着网络的快速发展,抖音和微博这样的软件也是越来越火,因此很多流行语就随之诞生,特别是在抖音里,经常看到游戏相关的用 ...
- c++中stringstream常见用法
c++中stringstream常见用法 stringstream使用时,要包含头文件#include<sstream>,sstream这个库的又是在于存入类型的数据可以直接进行转换,不用 ...
- 正则表达式及常见用法介绍
strObj.search(正则) 返回 下标/-1 strObj.match(正则) 返回 数组/null 正则的方法: re.test(字符) 返回 true/false 特点:只要有一个匹配就为 ...
- 【转】stringstream(sstream)常用用法介绍
[转]stringstream(sstream)常用用法介绍 转载自这篇博客 本文主要介绍 C++ 中 stringstream 类的常见用法. 1 概述 <sstream> 定义了三个类 ...
- stringstream的常见用法
stringstream的常见用法 前言 今天笔试实习,做到一道字符串的题,感觉自己对字符串掌握的不够,今天记录记录stringstream的学习 一.简介 头文件是 #include<sstr ...
- Scanpy(一)AnnData数据结构与一些API用法介绍
目录 Scanpy简介与安装 AnnData AnnData的结构 h5ad:AnnData的写入和读取 Scanpy中一些常用api的用法介绍 sc.pp.filter_cells sc.pp.fi ...
- 框架前期准备篇之AutoFac常见用法总结 转载
框架前期准备篇之AutoFac常见用法总结 一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点 ...
- 第二节:框架前期准备篇之AutoFac常见用法总结
一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点点小小的风波,我说我的好,他说他的好,非常容 ...
- python propresql mysql_python数据库操作mysql:pymysql、sqlalchemy常见用法详解
本文实例讲述了python数据库操作mysql:pymysql.sqlalchemy常见用法.分享给大家供大家参考,具体如下: 相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 ...
最新文章
- 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
- 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4
- RIS实现系统的远程安装之三使用远程安装
- 微软宣布将于08年发布Centro服务器软件
- web前端技术分享:多行文本溢出问题解决方案
- 广州科目三考试 不得不看的十条提醒(图)
- ZZULIOJ 1128: 课程平均分
- linux运维故障报告,iis7报为应用程序池“xx”提供服务的进程在启动过程中尝试读取配置时报告故障(503错误)处理方法...
- laravel 扩展包
- c语言如何框出视频或图像中的车辆,视频图像中的车辆检测跟踪和分类
- QT编程入门系列文章之六——API 文档的使用
- Android编程入门很简单pdf
- javaweb项目页面崩溃报错
- Android吃鸡 3dtouch,绝地求生刺激战场3Dtouch怎么用 3Dtouch安卓手机可以用吗
- 2022最新常用API接口
- OSAL 之功耗管理
- WEB测试应该注意哪些地方,怎样才能做好WEB测试
- Oracle锁表解决方法的详细记录详解
- 小程序:Thu May 05 2022 11:03:00 GMT+0800 (中国标准时间) 渲染层错误
- 微信小程序|使用小程序制作一个马赛克处理工具
热门文章
- poj 2965 The Pilots Brothers#39; refrigerator
- sql: table,view,function, procedure created MS_Description in sql server
- java扩展数组_Java数组扩展
- 银行卡号,指定字符长度分割字符串
- Makefile系列之五 :函数
- siamese改进_[CVPR2019]我对Siamese网络的一点思考(SiamMask)
- java 索引实现,Java创建ES索引实现
- flash制作文字笔顺_flash动画课件制作有什么优点
- mysql清理死链接_对MySQL的死连接Sleep的进程的来源研究
- navicat for mysql 数据传输_如何利用Navicat for MySQL数据库进行数据传输