在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-10-11 16:46:17