C++中atof函数的实现和atoi的实现

  在C++中有两个系统函数可以实现字符串转浮点型和字符串转整形,下面实现一下这两个函数。

#include <iostream>
#include <string>
using namespace std;
double atof(const char* s)//字符型转浮点型
{
	int i = 0;
	int k = 1;
	double d;
	double n = 0,m = 0;
	bool flag = true;
	if(*s == '-')//处理符号
	{
		flag = false;
		i ++;
	}
	else
	{
		flag = true;
	}
	while(*(s + i) != '\0')
	{
		while(*(s + i) >= '0' && *(s + i) <= '9')//处理整数部分
		{
			n = n * 10 + (*(s + i) - '0');
			i ++ ;
		}
		i ++;
		while(*(s + i) >= '0' && *(s + i) <= '9')//处理小数部分
		{
			m = m * 10 + (*(s + i) - '0');
			k *= 10;
			i ++; 
		}	
	}
	if(flag)
		d = n + m / k ;
	else
		d = -1 * (n + m / k);
	return d;
}
int atoi(const char * s)//字符型转整形
{
	int n = 0,i = 0;
	bool flag = true;
	if(*s == '-')//处理符号
	{
		flag = false;
		i ++;
	}
	else
	{
		flag = true;
	}
	while(*(s + i) != '\0' && *(s + i) >= '0' && *(s + i) <= '9')
	{
		n = n * 10 + (*(s + i) - '0');
		i ++ ;
	}
	if(flag)
		n = n;
	else
		n = -1 * n;
	return n;
}
int main(int argc, char *argv[])
{
	char s[10];
	char ss[10];
	int n;
	double d;
	cout<<"Input a string!"<<endl;
	cin>>s;
	cout<<atof(s)<<endl;
	cout<<"Input another string!"<<endl;
	cin>>ss;
	cout<<atoi(ss)<<endl;
	return 0;
}

  运行结果:

posted on 2015-01-26 23:45  橙风歌  阅读(1741)  评论(0编辑  收藏  举报

导航