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;
}
运行结果:
C++中atof函数的实现和atoi的实现的更多相关文章
- C++中的函数库
函数库是由系统建立的具有一定功能的函数的集合. 库中存放函数的名称和对应的目标代码,以及连接过程中所需的重定位信息.用户也可以根据自己的需要建立自己的用户函数库. "cstdlib" ...
- 字符串函数---atof()函数详解
atof()函数 atof(),是C 语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数,所使用的头文件为<stdlib.h>.该函数名是 “ascii to floating ...
- 软件测试中LoadRunner函数中的几个陷阱
软件测试 中 LoadRunner 函数中的几个陷阱 1.atof 在 loadrunner 中如果直接用 float f; f=atof("123.00"); lr _outpu ...
- C++ atof 函数
腾讯云:https://cloud.tencent.com/developer/article/1391966 atof函数: 功能:将字串转换成浮点型数 相关函数 atoi,atol,strtod, ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- mysql中now()函数的使用,还有oracle的sysdate,可能埋下的坑
mysql中now()函数的使用,还有oracle的sysdate 在需求中如果系统中药添加当前操作的时间那么很简单的一个操作在写sql的时候直接在这个字段对应的位置写上now()函数就可以了,这样就 ...
- 程序代码中退出函数exit()与返回函数return ()的区别
程序代码中退出函数exit()与返回函数return ()的区别 exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数 ...
- mysql中find_in_set()函数的使用
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...
- QT中使用函数指针
想仿命令行,所以定义了一个类,让一个String 对应一个 function,将两者输入list容器. 类中定义了 QString commandStr; void (MainWindow::*com ...
随机推荐
- win7打开ftp步骤
FTP是很方便文件传输的功能 打开ftp xftp连接 传输测试 如果连接不通的话,有可能是防火墙的问题
- HttpServlet实现serializable
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending a ...
- 设计模式——迭代器(Iterator)模式
概述 迭代器模式简单的说(按我目前的理解)就是一个类提供一个对外迭代的接口,方面调用者迭代.这个迭代接口至少包括两个方法:hasNext()--用于判断是否还有下一个,next()--用于取出下一个对 ...
- jquery插件之jquery-ui
1.jQuery UI是在jQuery的基础上,利用jQuery的扩展性,设计的插件.提供了一些常用的界面元素,如:模态框.日期控件等. 2.下载地址:http://jqueryui.com/down ...
- JS实现的base64加密、md5加密及sha1加密详解
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- fstat
相关函数:stat, lstat, chmod, chown, readlink, utime 头文件:#include <sys/stat.h> #include <unistd. ...
- Oracle登录被拒绝; 权限不足或用户名/口令无效
第一步: 打开CMD命令窗,输入如下命令:sqlplus "/as sysdba",回车 第二步: 输入命令:alter user sys identified by Orcl12 ...
- 21.线程池ThreadPoolExecutor实现原理
1. 为什么要使用线程池 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题.因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗 ...
- Python之如何删除pandas DataFrame的某一/几列
删除pandas DataFrame的某一/几列: 方法一:直接del DF['column-name'] 方法二:采用drop方法,有下面三种等价的表达式: 1. DF= DF.drop('co ...
- nyoj117——树状数组升级版(树状数组+离散化)
求逆序数 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中 ...