您的位置:首页 > 编程语言 > C语言/C++

字符串中提取数字的实现(c++)

2012-03-15 15:09 253 查看
////////////////////////////////////////

//2008-08-08

//stone

//实现了把一个字符串中的第一次出现的有效数字

//提取出来比如:abge_+*123.456dfsdf

//程序运行的结果应该是:123.456

///////////////////////////////////////

#include<iostream>

#include<cstring>

#include<cstdio>

#define MAXLEN 50 //定义字符数组的上届

using namespace std;

int main()

{

char numstr[MAXLEN];

int flag=1,i=0,j=0,h=0;

double m=0,sum=0,n=0;

cout<<"输入一个字符串:";

cin>>numstr;

// 1.剔除+-或者0~9前面的非法字符;

for(;i<strlen(numstr);i++)

{

if((numstr[i]<='9'&&numstr[i]>='0')||numstr[i]=='+'||numstr[i]=='-')

break;

else

j++;

}

if(numstr[j]=='-') //判断负号,为最后的输出做准备

flag=-1;

if(numstr[j]=='+'||numstr[j]=='-') //让j指向第一个数字元素(剔除+-号)

j++;

i=j; //让i也指向第一个数字元素

//2.剔除数字元素后面的非法字符;

h=j;

for(;i<strlen(numstr);i++)

{

if((numstr[i]<='9'&&numstr[i]>='0')||numstr[i]=='.')

h++;

else

break;

}

h-=1;

//3.计算整数 部分
/*

if(numstr[j]=='-')

{

flag=-1;

j++;



}

if(numstr[j]=='+')

j++;

*/

for( ;numstr[j]!='.'&&j<=h;j++) //整数部分计算的实现

{

n=n*10+numstr[j]-'0';

}

//4.计算小数部分

if(j<h&&numstr[h]!='.')

{

for(j++;j<=h;h--) //让j指向第一个数字字符,从最后一个字符元素往前算

{ //小数部分,直到h=j时停止。

m=m*0.1+numstr[h]-'0';

}

m*=0.1;
}

//5.合成数字

sum=n+m;

sum=sum*flag;

cout<<"输出转换字符结果:";

cout<<sum<<endl;

printf("printf输出的结果是: %lf",sum);

return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: