atoi、atof、_itoa、_itow 函数使用
atoi、atof、itoa、itow函数是windows平台下实现字符串与数值相互转换的函数。Linux平台下请使用标准库中的sprintf与sscanf函数。
atoi函数
原型:int atoi( const char *string );
ASCII to integer
作用:将字符串转为integer类型
atof函数
原型:double atof( const char *string );
ASCII to float
作用:将字符串转为double类型
对于以上函数,若字符串无法转化为合法的数值类型,函数将返回0 。
使用范例(来自MSDN):![](https://image.cha138.com/20210608/7f537209f1b54dd091a8775596a43e9c.jpg)
1
![](https://image.cha138.com/20210608/ea42d10a75c842e48152d5a705670b6f.jpg)
2
![](https://image.cha138.com/20210608/ea42d10a75c842e48152d5a705670b6f.jpg)
3
![](https://image.cha138.com/20210608/ea42d10a75c842e48152d5a705670b6f.jpg)
4
![](https://image.cha138.com/20210608/ea42d10a75c842e48152d5a705670b6f.jpg)
5
![](https://image.cha138.com/20210608/7f537209f1b54dd091a8775596a43e9c.jpg)
6
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
7
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
8
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
9
![](https://image.cha138.com/20210608/1be33ed006124da18becb07b63a6676a.jpg)
10
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
11
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
12
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
13
![](https://image.cha138.com/20210608/1be33ed006124da18becb07b63a6676a.jpg)
14
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
15
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
16
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
17
![](https://image.cha138.com/20210608/1be33ed006124da18becb07b63a6676a.jpg)
18
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
19
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
20
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
21
![](https://image.cha138.com/20210608/1be33ed006124da18becb07b63a6676a.jpg)
22
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
23
![](https://image.cha138.com/20210608/48d6771f5c6540ccb2d44087a2a1ea0f.jpg)
24
![](https://image.cha138.com/20210608/62e9e20856a9486bb79aa3649562b3e5.jpg)
25
![](https://image.cha138.com/20210608/ea42d10a75c842e48152d5a705670b6f.jpg)
输出:
atof test: ASCII string: -2309.12E-15 float: -2.309120e-012
atof test: ASCII string: 7.8912654773d210 float: 7.891265e+210
atoi test: ASCII string: -9885 pigs integer: -9885
atol test: ASCII string: 98854 dollars long: 98854
_itoa函数
原型:char *_itoa( int value, char *str, int radix );//2<=radix<=36
Integer to ASCII
作用:将Integer类型转换为radix进制,然后以ASCII字符串的形式存放在str中
_itow函数
wchar_t * _itow( int value, wchar_t *str, int radix ); //2<=radix<=36
Integer to Wide Char
作用:将Integer类型转换为radix进制,然后以宽字符串的形式存放在str中
以上2个函数均有安全隐患(当字符数组长度不足保存结果时会导致缓冲区溢出),在vs2008中编译时会有警告。推荐使用它们的安全版本—— _itoa_s与_itow_s 。
_itoa_s 函数原型如下:
errno_t _itoa_s(
int value,
char *buffer,
size_t sizeInCharacters, //存放结果的字符数组长度
int radix
);
当转换的结果长度比sizeInCharacters变量大时,由于出现access violation,函数将马上终止,而_itoa函数将继续运行。
使用范例(来自MSDN):
![](https://image.cha138.com/20210608/2f019a0917cc4868b71d4760e8eed3a2.jpg)
输出:
base 10: -1 (2 chars)
base 9: 12068657453 (11 chars)
base 8: 37777777777 (11 chars)
base 7: 211301422353 (12 chars)
base 6: 1550104015503 (13 chars)
base 5: 32244002423140 (14 chars)
base 4: 3333333333333333 (16 chars)
base 3: 102002022201221111210 (21 chars)
base 2: 11111111111111111111111111111111 (32 chars)
base 10: -1 (2 chars)
base 9: 12068657453 (11 chars)
base 8: 37777777777 (11 chars)
base 7: 211301422353 (12 chars)
base 6: 1550104015503 (13 chars)
base 5: 32244002423140 (14 chars)
base 4: 3333333333333333 (16 chars)
base 3: 102002022201221111210 (21 chars)
base 2: 11111111111111111111111111111111 (32 chars)