知识点
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;
}