字符串的两个比较常见的函数itoa和atoi,当然这里拓展到浮点型到字符串和字符串到浮点型。。。代码如下,如有不足,还请指点,不胜感激。。。
字符串转整型:atoi
int StrToInt(string s)
{
int len=s.size();
int i=0,sum=0,j=1;
if(s[0]=='+'||s[0]=='-')
{
i=1;
if (s[0]=='-') j=-1;
}
while (s[i]<='9'&&s[i]>='0')
{
sum=sum*10+s[i]-48;
i++;
if(i==len)
break;
}
return sum*j;
}
整型转字符串:itoa
string IntToStr(int a)
{
string s;
if(a<0)
{
a=-a;
s.push_back('-');
}
int Table[]={1,10,100,1000,10000};
int i;
for (i=4;i>-1;i--)
{
if(a>=Table[i])
break;
}
for (int j=i;j>-1;j--)
{
s.push_back((char)(a/Table[j]+48));
a=a-a/Table[j]*Table[j];
}
return s;
}
浮点型转字符串:ftoa
string FloatToStr(float a)
{
string s;
if(a<0)
{
a=-a;
s.push_back('-');
}
int Table[]={1,10,100,1000,10000};
float Table1[]={0.1,0.01,0.001,0.0001,0.00001,0.000001,0.0000001};
int i;
for (i=4;i>-1;i--)
{
if(a>=Table[i])
break;
}
for (int j=i;j>-1;j--)
{
s.push_back((char)((int)a/Table[j]+48));
a=a-(int)a/Table[j]*Table[j];
}
if (a-int(a)>0.000001) s.push_back('.');
i=0;
do
{
a=a/0.1;
s.push_back(int(a)+48);
a=a-int(a);
i++;
}
while ((a-int(a))*Table1[i]>0.000001);
return s;
}
字符串转浮点型:
float StrToFloat(string s)
{
int len=s.size();
int i=0,j=1;
float sum=0;
float Table[]={0.1,0.01,0.001,0.0001,0.00001,0.000001,0.0000001,0.00000001,0.000000001,0.0000000001};
if(s[0]=='+'||s[0]=='-')
{
i=1;
if (s[0]=='-') j=-1;
}
while (s[i]<='9'&&s[i]>='0')
{
sum=sum*10+s[i]-48;
i++;
if(i==len)
break;
}
if(s[i]=='.')
{
i++;
int k=i;
if(i!=len)
while(s[i]<='9'&&s[i]>='0')
{
sum=sum+(s[i]-48)*Table[i-k];
i++;
if(i==len)
break;
}
}
return sum*j;
}
已经初步测试成功的,包含头文件#include<string>,#include<iostream>