c++中如:string s="1234sdffs"; 把前四个(1234)转换成整形int n=1234; 怎样实现,求助!
3个回答
展开全部
不想自己编的话可以直接利用 atoi 函数转化,该函数会一直转化到第一个无法转化的字符为止。
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
string s="1234sdffs";
int i;
i=atoi(s.c_str());
cout<<i<<endl;
}
追问
谢谢,那如果自己编,该怎么样呢?如用是s【0】,s【1】。。。
追答
如果仅仅是前四个,可以构造4次循环取出单个字符减去 ‘0’ 的 ascii 值,即可将 char 转化为 int ,然后通过 r=r*10+x 构造出结果即可。
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
string s="1234sdffs";
int r=0;
for(int i=0;i<=3;i++)
r=r*10+s[i]-'0';
cout<<r<<endl;
}
如果不确认前边能转化的有多少位,可以加上条件判断,这样只会取前边能转化的几个,碰到第一个不能转化为数字的停止。
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
string s="12345sdffs";
int r=0;
for(int i=0;s[i]>='0' && s[i]<='9';i++)
r=r*10+s[i]-'0';
cout<<r<<endl;
}
展开全部
int n=0;
string s="1234sdffs" ;
for(int i=0;i<s.length();i++)
{
if(s[i]>='0'&&s[i]<='9')
n+=(s[i]-'0')*10;
else
break;
}
n/=10;
以上就是自己写的简单思路了。我学过C,但对C++不太熟,所以可能会有一些用法错误,不过求解的思路应该没错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
string s="232654765";
int t;
for(int i=0;i<s.length();i++)
{
t=s[i]-'0';//char型自动转换int型
cout<<t<<endl;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询