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

  运行结果:

时间: 2024-08-03 23:38:49

C++中atof函数的实现和atoi的实现的相关文章

atof函数的自实现

atof函数,用于将字符串参数转化为浮点型 /*  系统:linux  自实现atof函数,主函数用于参数合法化的判断,若合法则调用子函数,否则退出  此程序包含两种算法的atof实现,均有效 */ #include <stdio.h> #include <string.h> float str_to_float(char *str); float str_to_float1(char *str); int main(int argc, char* argv[]) {     /*

软件测试中LoadRunner函数中的几个陷阱

软件测试 中 LoadRunner 函数中的几个陷阱 1.atof 在 loadrunner 中如果直接用 float f; f=atof("123.00"); lr _output_message("%f",f); 输出的结果会是1244128.00,根本不是我们想要的. 因为float,double型在不同的平台下长度不一样,所以在loadrunner 软件测试中LoadRunner函数中的几个陷阱 1.atof 在loadrunner中如果直接用 float

C++中的函数对象(一)

STL中的函数对象,大多数STL类属算法(以及某些容器类)可以以一个函数对象作为参数.引入函数对象的目的是为了使算法的功能富于变化,从而增强算法的通用性. 所谓函数对象,是指一段代码实体,它可以不带参数,也可以带有若干参数,其功能是获得一个值,或者改变操作的状态.在C++编程中,任何普通的函数都满足这个定义,而且,任何一个重载了运算符operator()的类的对象也都满足这一定义,称为函数对象. 普通函数 int multfun(int x, int y) { return x*y; } 或者下

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值

js中一些函数(一)【丫头, 今天去哪儿了呢,好些没有】

Math.Rondom()   ==>  0 到 1 之间的小数 Math.floor(x)  ==>  小于或者等于 x 的整数(即转换成整数后是不能比 x 大的整数) setInterval(hanshu,1000)  ==>  意思为调用下面的 hanshu(), 间隔时间为 1000 ms(毫秒) js中一些函数(一)[丫头, 今天去哪儿了呢,好些没有],码迷,mamicode.com

Mysql中的函数

阅读目录 什么是函数 与存储过程的区别 mysql自带函数 自定义函数 什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中使用,而存储过程不能: 函数一般用于实现较简单的有针对性的功能(如求绝对值.返回当前时间等),存储过程用于实现复杂的功能(如复杂的业务逻辑功能): mysql自带函数 mysql本身已经实现了一些常见的函数,如数学函数.字符串函

javascript中所有函数的参数都是按值传递的

[javascript中所有函数的参数都是按值传递的] 参考:http://www.jb51.net/article/89297.htm

程序代码中退出函数exit()与返回函数return ()的区别

  exit(0):正常运行程序并退出程序:   exit(1):非正常运行导致退出程序:   return():返回函数,若在主函数中,则会退出函数并返回一值.  解析: 1. return返回函数值,是关键字: exit 是一个函数. 2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个进程的结束. 3. return是函数的退出(返回):exit是进程的退出. 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的).ex

JavaScript闭包中闭包函数this的指向

阅读文章前, 请先阅读阮一峰老师的这篇文章http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 前人写过的, 而且写得很好, 就没必要重复下去了. 只加一些阮老师的文章里没有说的.顺便总结一下. 引用一句话: "闭包就是functions that return function"(出处已经忘记啦) 闭包的类型: 循环闭包, 函数闭包 闭包的特点: 外部访问函数内部的值, 函数内部变量不被回收