码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-01-27 00:17:25      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

  在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;
}

  运行结果:技术分享

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

标签:

原文地址:http://www.cnblogs.com/coderchuanyu/p/4251691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!