C++ 数字与字符串的相互转换的几种方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ 数字与字符串的相互转换的几种方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2120字,纯文字阅读大概需要4分钟。
内容图文
![C++ 数字与字符串的相互转换的几种方法](/upload/InfoBanner/zyjiaocheng/602/ba45d6f5dbed40a896a59e33411570cf.jpg)
平时在刷题的时候总是会遇到数字与字符串怎么转换的问题,我们要是用一般的方法。
字符串变成数字的常规套路
秦九昭算法
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的用法
内容总结
以上是互联网集市为您收集整理的C++ 数字与字符串的相互转换的几种方法全部内容,希望文章能够帮你解决C++ 数字与字符串的相互转换的几种方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。