ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ 数字与字符串的相互转换的几种方法

2021-02-27 12:00:29  阅读:1196  来源: 互联网

标签:digit ss C++ 几种 int stringstream 字符串 include


平时在刷题的时候总是会遇到数字与字符串怎么转换的问题,我们要是用一般的方法。

字符串变成数字的常规套路
秦九昭算法
res=res*进制+每一位的数字(从高位向低位)

string a;
int res=0;
for(int i=0;i<a.length();i++)
res=res*10+a[i]-'0';

数字变字符串。
这是把数字19234变字符串的方法

#include<iostream>
#include<algorithm>

using namespace std;

int main(void)
{
	int s=19234;
	string a;
	while(s)
	{
		a+=s%10+'0';
		s/=10;
	}
	reverse(a.begin(),a.end() );
	cout<<a;
}

数字变成字符串的方法用到了reverse的函数,我觉得这样下来代码量也是很大,不值得去使用,我们有没有更简单的方法呢,是有的。

然后在寒假的前十天,我们学了一个网课,我们了解到了一个很好的一个解决办法,叫字符串流。

stringstream 这个变量名

然后这个在sstream的头文件当中,我们应该如何使用呢。

#include<iostream>
#include<algorithm>
#include<sstream>

using namespace std;

int main(void)
{
	string a="19235";
	int digit;
	stringstream ss;
	ss<<a;
	ss>>digit;
	cout<<digit;
}

在这里插入图片描述
注意事项
原字符串不能有空格,如果出现空格

#include<iostream>
#include<algorithm>
#include<sstream>

using namespace std;

int main(void)
{
	string a="192 35";
	int digit;
	stringstream ss;
	ss<<a;
	ss>>digit;
	cout<<digit;
}

在这里插入图片描述
我们做题的时候,可能会出现一些这样的情况
在这里插入图片描述
例题AcWing 1204. 错误票据
让你输入每行的数字,我们又不知道有多少个的时候。
我们可以用到这个stringstream

#include<iostream>
#include<algorithm>
#include<sstream>

using namespace std;

const int N=1e5+10,Inf=1e7;

int st[N];

int main(void)
{
        int i=0;
        int n;
        scanf("%d\n",&n);
        cout<<n<<endl;
        string a;
        while(getline(cin,a))
        {
        stringstream ss(a);
        i=0;
        while(ss>>st[i]) i++;
        for(int j=0;j<i;j++)
        printf("%4d ",st[j]);
        puts("");
        }
        
}


在这里插入图片描述
我们可以观察到每一个数都输出来了,然后我们怎么使用呢。

一、预处理,我们要用到sstream的头文件。

#include<sstream>

二、初始化

stringstream ss;

如果是这种形式的话

stringstream ss(a);

等同于

stringstream ss;
ss<<a;

这是两种初始化的方法。
三、

int digit;
double digi;
float dig;

选择你要变换数字的类型。

ss>>digit;
ss>>digi;
ss>>dig;

实现转化,我们在这个时候先说一下,ss>>digit转换的时候,如果不成功会返回0.
于是我们可以实现这样的过程。

while(ss>>digit[i]) i++;
把ss保存的多个数保存在digit数组里

这样就是我们需要学会的stringstream的用法。

持续更新本文种~~,下一步介绍sscanf的用法以及ssprintf的用法

标签:digit,ss,C++,几种,int,stringstream,字符串,include
来源: https://blog.csdn.net/qq_52358098/article/details/114166389

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有