原创 字符串转化为数字

2009-10-29 09:10 9220 5 5 分类: MCU/ 嵌入式

6.1.2  字符串转化为数字


面试例题3:使用库函数将字符串转换为数字。


考点:C库函数中字符串转换为数字的使用。


出现频率:★★★★


解析


与上节数字转换为字符串类似,C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。以下列举了各函数的方法及其说明。


atof():将字符串转换为双精度浮点型值。


atoi():将字符串转换为整型值。


atol():将字符串转换为长整型值。


strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。


strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。


strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。


以下程序演示如何使用atoi ()函数和atof ()函数。



1    # include <stdio.h>
2    # include <stdlib.h>
3   
4    int main ()
5    {
6        int num_int;
7        double num_double;
8        char str_int[30] = "435";         //将要被转换为整型的字符串
9        char str_double[30] = "436.55";  //将要被转换为浮点型的字符串
10  
11       num_int = atoi(str_int);          //转换为整型值
12       num_double = atof(str_double);  //转换为浮点型值
13  
14       printf("num_int: %d\n", num_int);
15       printf("num_double: %lf\n", num_double);
16  
17       return 0;
18   }
输出结果:
num_int: 435
num_double: 436.550000

面试例题4:不使用库函数将字符串转换为数字。


考点:字符串转换为数字时,对相关ASCII码的理解。


出现频率:★★★★


解析


程序代码如下:


1    #include <iostream>
2    using namespace std;
3   
4    int str2int(const char *str)
5    {
6        int temp = 0;
7        const char *ptr = str;  //ptr保存str字符串开头
8   
9        if (*str == '-' || *str == '+')  //如果第一个字符是正负号,
10       {                      //则移到下一个字符
11           str++;
12       }
13       while(*str != 0)
14       {
15           if ((*str < '0') || (*str > '9'))  //如果当前字符不是数字
16           {                       //则退出循环
17               break;
18           }
19           temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
20           str++;      //移到下一个字符
21       }   
22       if (*ptr == '-')     //如果字符串是以"-"开头,则转换成其相反数
23       {
24           temp = -temp;
25       }
26  
27       return temp;
28   }
29  
30   int main()
31   {
32       int n = 0;   
33       char p[10] = "";
34  
35       cin.getline(p, 20);   //从终端获取一个字符串
36       n = str2int(p);      //把字符串转换成整型数
37      
38       cout << n << endl;
39  
40       return 0;
41   }
程序执行结果:
输入:1234
输出:1234
输入:-1234
输出:-1234
输入:+1234
输出:1234
程序中的str2int函数作用是将字符串转换成整数。这个函数的转换过程与例题2中的int2str函数相比更加简单,它只需要做一次while循环(代码第13行)就能把数值大小计算出来,如果结果是负数,就加一个负号。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条