C++学习心得讲解(1)——stringstream

本文介绍了C++中的stringstream,它作为一个特殊工具用于字符串和其他数据类型之间的转换。通过实例展示了如何使用stringstream进行数据的读取和写入,包括将int和double转换为string,以及反之的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开这个新专栏是为了帮助大家更好的入门C++。另外还有一个付费专栏是进阶的C++知识,之所以开付费,是想赚点钱,补贴一下家用,希望大家理解🙏🙏🙏

好,废话不多说,今天我们学一个和字符串有联系的一个知识——stringstream。

1.引例 

首先我们来复习一下变量。变量就是用来装数据的容器,不同的数据类型要装在不同类型的容器中。

不同数据类型之间是可以进行转换的,比如把int盒子中的数据放到double类型的盒子中,那么数据就变成了double类型了,把int盒子中的数据放到了char类型的盒子中,就变成了char类型了。

int,double,char这三种数据类型之间都可以相互进行转换,可以使用自动类型转换或者强制类型转换

但是string是特殊的数据类型,那么string类型的数据如何与其他类型的数据进行转换呢?

比如图片中是两种不同包装的糖果,如果我们想把第一种包装的糖果换成第二种包装,需要几步呢?

1.打开第一种包装的糖果的包装纸,取出糖果

2.把糖果放到第二种包装的包装纸中 

如果要把其他数据类型的数据与string类型数据进行转换,也是需要这样的步骤

1.把数据从其他数据类型的盒子中取出来

2.把取出来的数据重新放到string类型的盒子中

只是这中间的转换需要一个特殊的工具才能完成,这个特殊的工具就叫stringstream。

2.stringstream

给大家看一下stringstream的介绍:

stringstream是c++标准库提供的字符串流,作为定义字符串流的数据类型;

stringstream就像iostream一样,可以当做是存放数据的管道,可以把数据放入 管道中也可以从管道中读取数据

从iostream中读取数据到变量中是使用cin,把变量中的数据输出到iostream中 是使用cout 同样把数据放入stringstream和从stringstream中读取数据也需要类似cin cout 的工具

stringstream的使用

新建一个stringstream管道,管道名为sin        
把变量a中的数据放入管道中                           
从管道中把数据取出来放到变量b中                
代码:
stringstream sin;
sin<<a;
sin>>b;

注意:需要头文件<sstream>!!!(当然,万能头文件包括他)

stringstream的应用

stringstream用于string类型与其他数据类型之间的转换

int类型转string类型:
#include<bits/stdc++.h>
using namespace std;
int main()
{
	//int转string
	int a=20210323;
	string s;
	stringstream sin;//定义一个字符串流管道 
	sin<<a;//将int类型的数据放到管道中 
	sin>>s;//从管道中取出数据放到一个字符串变量中 
	cout<<s<<endl;
	return 0;
}

我们看一下效果:

可能你看不出变化,但实际上他已经是一个字符串了。

当然,如果你想验证,可以再代码后面加上一点东西,比如:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	//int转string
	int a=20210323;
	string s;
	stringstream sin;//定义一个字符串流管道 
	sin<<a;//将int类型的数据放到管道中 
	sin>>s;//从管道中取出数据放到一个字符串变量中 
	cout<<s+"abc"<<endl;//加在这哦~
	return 0;
}

运行:

 因为只有字符串之间能拼接,所以20210323是个字符串。

string类型转int类型:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	//string转int
	string s="20210819";
	int a;
	stringstream sin;//定义一个字符串流管道 
	sin<<s;//将int类型的数据放到管道中 
	sin>>a;//从管道中取出数据放到一个字符串变量中 
	cout<<a<<endl;
	return 0;
}

效果:

跟刚才一样的道理,我们在代码后面加点东西,检验一下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	//string转int
	string s="20210819";
	int a;
	stringstream sin;//定义一个字符串流管道 
	sin<<s;//将int类型的数据放到管道中 
	sin>>a;//从管道中取出数据放到一个字符串变量中 
	cout<<a+1<<endl;//加在这哦~
	return 0;
}

运行:

因为只有int类型能进行加法,所以20210819是个数字。

在网上还找到了一个string转double和double转string的,给大家看看:

3.总结

数据就像是水,装入不同形状的容器中就是不同的形状。
装在int或者double容器中的数据 经过”管道” 就可以装入一个
string类型的变量中,反过来也是一样的
数据装在一种容器中被容器的外壳“束缚” 着,那么把数据放入“管道”
中,数据就“解绑”了
数据的转换和数据的拆分就是stringstream最长使用的两个功能
好,今天就分享到这了,觉得好就点个赞,加个关注,付费专栏我也会持续更新,希望大家能花费点¥,订阅一个,这对我很重要,谢谢~
最后投个票:
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值