字符串中提取数字的实现(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;
}
//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;
}
相关文章推荐
- Mysql中实现提取字符串中的数字的自定义函数分享
- Mysql中实现提取字符串中的数字的自定义函数分享
- Java双重循环实现任意字符串中提取数字子串
- c语言实现字符串中提取数字,遇到非字符串则换行
- js实现在字符串中提取数字
- 在Shell脚本中编写AWK脚本实现数据提取—注意格式、awk中使用shell变量、awk中数字字符串转换成数字、awk中字符串相等比较
- js实现在字符串中提取数字
- js实现在字符串中提取数字 和字母
- 从字符串中提取数字
- C# 实现数字字符串左补齐0的两种方法
- 整理用Java实现数字转化成字符串左边自动补零方法
- 通过程序统计字符串的大写字母个数、小写字母个数、数字个数和其它字符个数。用函数func实现功能
- java从字符串中提取数字
- 提取字符串中的数字并分别保存
- C#实现将千分位字符串转换成数字的方法
- java从字符串中提取数字
- 怎么把字符串中的数字提取出来
- [原]Java面试题-将字符串中数字提取出来排序后输出
- js字符串转换成数字与数字转换成字符串的实现方法
- boost-使用format和lexical_cast实现数字和字符串之间的转换