1.double atof(const char *nptr);
把字符串转换成浮点数值。
<math.h>或<stdlib.h>
nptr:带转换的字符串。
若无溢出,返回字符串的双精度浮点数值。

int atoi(const char* nptr);
把字符串转换成整型数。
<stdlib.h>
nptr:带转换的字符串。
成功转换,返回字符串的整数值;若无法转换返回0.

long atol(const char* nptr);
将字符串转换成长整形数值。
<stdlib.h>
nptr: 待转换的字符串。
若无溢出,返回字符串的长整形数值。

2.数字转化为字符串

● itoa():将整型值转换为字符串。
  ● ltoa():将长整型值转换为字符串。
  ● ultoa():将无符号长整型值转换为字符串。
  ● gcvt():将浮点型数转换为字符串,取四舍五入。
  ● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
  ● fcvt():指定位数为转换精度,其余同ecvt()。

还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢。下列程序演示了如何使用itoa()函数和gcvt()函数:

# include <stdio.h>
# include <stdlib.h>int main ()
{int num_int = 435;double num_double = 435.10f;char str_int[30];char str_double[30];itoa(num_int, str_int, 10);  //把整数num_int转成字符串str_int   参数 10表示按十进制类型进行转换gcvt(num_double, 8, str_double);  //把浮点数num_double转成字符串str_double   参数8表示精确位数printf("str_int: %s\n", str_int);printf("str_double: %s\n", str_double);return 0;
}

结果:
str_int: 435
str_double: 435.10001

如果不使用atoi或sprintf等库函数,可以通过把整数的各位上的数字加“0”转换成char类型并存到字符数组中。但是要注意,需要采用字符串逆序的方法。如以下程序所示:

1    #include <iostream>
2    using namespace std;
3
4    void int2str(int n, char *str)
5    {
6        char buf[10] = "";
7        int i = 0;
8        int len = 0;
9        int temp = n < 0 ? -n: n;  // temp为n的绝对值
10
11       if (str == NULL)
12       {
13           return;
14       }
15       while(temp)
16       {
17           buf[i++] = (temp % 10) + '0';  //把temp的每一位上的数存入buf
18           temp = temp / 10;
19       }
20
21       len = n < 0 ? ++i: i;  //如果n是负数,则多需要一位来存储负号
22       str[i] = 0;            //末尾是结束符0
23       while(1)
24       {
25           i--;
26           if (buf[len-i-1] ==0)
27           {
28               break;
29           }
30           str[i] = buf[len-i-1];  //把buf数组里的字符拷到字符串
31       }
32       if (i == 0 )
33       {
34           str[i] = '-';          //如果是负数,添加一个负号
35       }
36   }
37
38   int main()
39   {
40       int nNum;
41       char p[10];
42
43       cout << "Please input an integer:";
44       cin >> nNum;
45       cout << "output: " ;
46       int2str(nNum, p);        //整型转换成字符串
47       cout<< p << endl;
48
49       return 0;
50   }

结果:

程序中的int2str函数完成了int类型到字符串类型的转换。在代码第46行对int2str函数做了测试。程序的执行结果如下所示:
Please input an integer: 1234
Output: 1234
如果输入的是个负数,程序执行结果如下所示:
Please input an integer: -1234
Output: -1234

3. 字符串转化为数字

● 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

不使用库函数将字符串转换为数字:

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

参考:http://blog.sina.com.cn/s/blog_4c8a2a870100qgq7.html

atoi(),atof(),atol();iato(),fato(),lato()---字符串和数字互相转换相关推荐

  1. TensorFlow 字符串 与数字 互相转换

    数字转字符串 tf.as_string() 数据类型只能取 int32, int64, complex64, float32, float64, bool, int8 中的一种 import tens ...

  2. shell 字符串和数字互相转换

    一.数字转字符串 直接加引号即可,例如 var=1 var1="$var" 这样就转化了 二.字符串转数字,三种方法 1,用${{a}} 2,用let达到(()) 运算效果. le ...

  3. JS 字符串截取、字符串与数字的转换

    JS 获取字符串最后一个字符 方法一:String.charAt(String.length - 1) const str = "123456"; console.log(str. ...

  4. 利用标准库sprintf、sscanf函数实现字符串和数字的转换

    一.sprintf() 用于将数字转化为字符串 1.将整数转化为字符串 #include<iostream> using namespace std;int main() {char st ...

  5. Java中字符串和数字间转换

    String字符串转化为数字 Integer.parseInt(String s) : Integer.valueOf(String s); 例子: String s= "123" ...

  6. python字符串与数字互相转换

    字符串->数字: int(字符串) , float(字符串) 数字->字符串: str(数字) 转载于:https://www.cnblogs.com/enjie/p/11108464.h ...

  7. atoi函数_C语言字符串、数字转换函数大全!

    常用到字符串和数字的转换 想找却发现网上的资料太散 所以搜集整理一下,方便给大家以后再用 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) st ...

  8. C/C++中字符串与数字相互转换

    数字转字符串: 用C++的streanstream: #include <sstream> #Include <string> string num2str(double i) ...

  9. 字符串转数字,数字转字符串

    字符串转数字,数字转字符串 实现atoi和atof函数 atoi atof 字符串转数字的库函数 atoX系列函数 stoX() 系列函数 数字转字符串的库函数 to_string sprintf 实 ...

最新文章

  1. 在aptana3中使用scriptDoc__scriptDoc 2.0完全参考
  2. centos下搭建yum服务器
  3. 【直播】今晚言有三阿里云直播、赠书+书籍解读+案例剖析
  4. Requirejs与r.js打包,AMD、CMD、UMD、CommonJS、ES6模块化
  5. 在Linux中创建静态库.a和动态库.so
  6. Socket选项之SO_RCVTIMEO 和SO_SNDTIMEO
  7. Laravel框架性能优化
  8. 爱奇艺漫威等系列电影因版权到期下架 会员无补偿
  9. 嵌入式linux下网卡设备驱动与网络协议栈的设计实现.pdf,嵌入式系统的通用网络驱动模型设计与实现.pdf...
  10. LeetCode(171)——Excel表列序号(JavaScript)
  11. vue 使用ace编辑器
  12. 计算机考研刷题小程序
  13. web前端搭建相关文件夹结构
  14. ESP8266串口WIFI 无线控制模块
  15. SV806 QT UI开发
  16. k8s - service
  17. 由海天瑞声支持,全球最大多领域英语开源数据集发布
  18. 只有一种英雄主义,就是在认清生活真相之后依然热爱生活
  19. qt文本转语音tts的使用方法,QTextToSpeech
  20. HCIP-5.4OSPF路由聚合、缺省路由

热门文章

  1. debian安vs_在Debian 10系统下安装和更新Visual Studio Code的方法
  2. 现代支付系统设计 ——基于微服务的实践
  3. 循迹智能小车的组装过程
  4. 数据库中事务、回滚是啥意思?
  5. 游戏帧同步的流程与实现
  6. 【无标题】求助,怎么把ienglish平板刷机
  7. 电商收付通,多服务商模式
  8. 小程序中的实时日志,直接在微信公众号可以看到数据
  9. Ubuntu18.04 命令行打开计算器
  10. 区块链的跨境货币汇款:麦腾支付