atoi函数:将字符串转换为整型
atof函数:将字符串转换为浮点类型
这里我们需要用到字符与ascii码一一对应的知识,对于atof函数我们可以首先忽略小数点,每次取一个数,再将上次得到的数乘以10求和,得到一个大整数后再将小数点左移即可。而atoi函数可以借助atof函数+取整完成。
**注:**这里需要对字符串进行去除空白以及符号进行特判。
#include <bits/stdc++.h>using namespace std;/* 字符串转浮点数 */double my_atof(const char *num) { double val, power; int i, sign; for(i = 0; isspace(num[i]); ++i); /* 去除空白符 */ sign = num[i] == '-' ? -1 : 1; if(num[i] == '+' || num[i] == '-')i++; /* 去掉符号 */ for(val = 0.0; isdigit(num[i]); ++i) val = val * 10 + num[i] - '0'; if(num[i] == '.')i++; for(power = 1.0; isdigit(num[i]); ++i) { val = val * 10 + num[i] - '0'; power *= 10.0; } return val * sign / power;}/* 字符串转整数 */int my_atoi(const char *num) { return (int) atof(num);}int main(){ char * s1 = "12.34"; char * s2 = "123123"; cout << my_atof(s1) << endl; cout << my_atoi(s2) << endl; return 0;}