zoukankan      html  css  js  c++  java
  • 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) != '')
    	{
    		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) != '' && *(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;
    }
    

      运行结果:

  • 相关阅读:
    【转载】微服务,我们需要哪些基础框架?
    Flume多Sink方案修正
    Linux find命令
    Kafka日志及Topic数据清理
    Kafka日志清除策略
    Oracle误删除数据的恢复方法
    Kafka中Topic级别配置
    Kafka server部署配置优化
    配置Kafka集群和zookeeper集群
    改变家目录
  • 原文地址:https://www.cnblogs.com/coderchuanyu/p/4251691.html
Copyright © 2011-2022 走看看