atoi(),itoa() ,atol(),atof ()的实现
2018-06-17 22:06:00来源:未知 阅读 ()
atoi(将字符串转换成整型数):atoi(const char *nptrnt )
函数说明 : atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
itoa(将整型数转换成字符串):char *itoa( int value, char *string,int radix);
原型说明:
value:欲转换的数据。
string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制
1 #include<iostream> 2 using namespace std; 3 int atoi1(char *s) 4 { 5 int sign=1,num=0; 6 if(*s=='-') 7 sign=-1; 8 s++; 9 while((*s)!='\0') 10 { 11 num=num*10+(*s-'0'); 12 s++; 13 } 14 return num*sign; 15 } 16 char *itoa(int val, char *buf, unsigned radix) 17 { 18 char *p; 19 char *firstdig; 20 char temp; 21 unsigned digval; 22 p = buf; 23 if(val <0) 24 { 25 *p++ = '-'; 26 val = (unsigned long)(-(long)val); 27 } 28 firstdig = p; 29 do{ 30 digval = (unsigned)(val % radix); 31 val /= radix; 32 33 if (digval > 9) 34 *p++ = (char)(digval - 10 + 'a'); 35 else 36 *p++ = (char)(digval + '0'); 37 }while(val > 0); 38 39 *p-- = '\0 '; 40 do{ 41 temp = *p; 42 *p = *firstdig; 43 *firstdig = temp; 44 --p; 45 ++firstdig; 46 }while(firstdig < p); 47 return buf; 48 } 49 int main() 50 { 51 char *s="-16734",buf[20]; 52 int a=34567; 53 cout<<atoi1(s)<<endl; 54 cout<<itoa(a,buf,10)<<endl; 55 56 return 0; 57 }
atof(将字符串转换成浮点型数);double atof(const char *nptr);
函数说明 : atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
1 #include<iostream> 2 using namespace std; 3 4 double myatof(const char* sptr) 5 { 6 double temp=10; 7 bool ispnum=true; 8 double ans=0; 9 if(*sptr=='-')//判断是否是负数 10 { 11 ispnum=false; 12 } 13 sptr++; 14 while(*sptr!='\0')//寻找小数点之前的数 15 { 16 if(*sptr=='.') 17 { 18 sptr++; 19 break; 20 } 21 ans=ans*10+(*sptr-'0'); 22 sptr++; 23 } 24 while(*sptr!='\0')//寻找小数点之后的数 25 { 26 ans=ans+(*sptr-'0')/temp; 27 temp*=10; 28 sptr++; 29 } 30 if(ispnum) 31 return ans; 32 else 33 return ans*(-1); 34 } 35 int main() 36 { 37 char *s="-167.678"; 38 cout<<myatof(s)<<endl; 39 return 0; 40 }
atol(将字符串转换成长整型数):long atol(const char *nptr);
函数说明 : atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
1 #include<iostream> 2 #include <stdlib.h> 3 #include <ctype.h> 4 using namespace std; 5 6 #define N 50 7 8 long my_atol(const char *nptr) 9 { 10 int c; 11 long total = 0; 12 int sign; 13 while(isspace((int)(unsigned char)*nptr))//跳过前面的空格 14 ++nptr; 15 c = (int)(unsigned char)*nptr++; 16 sign = c; 17 if(c == '-' || c == '+') 18 c = (int)(unsigned char) *nptr++; 19 20 while(isdigit(c)) 21 { 22 total = 10 * total + c- '0'; 23 c = (int)(unsigned char)*nptr++; 24 } 25 if(sign == '-') 26 return -total; 27 else 28 return total; 29 } 30 31 int main(void) 32 { 33 char str[N]; 34 cout<<"Enter a string:"<<endl;; 35 fgets(str,N,stdin); 36 cout<<my_atol(str)<<endl; 37 return 0; 38 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- #leetcode刷题之路8-字符串转换整数 (atoi) 2019-02-27
- Leetcode: 8. String to Integer (atoi) 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash