字符串和数值转换

stdlib.h/cstdlib

字符串数组转其它类型相关函数 
  需要注意的是这里是字符串数组(char*)转为其它类型数据,并不是C++“string”头文件中string类型转为其它类型数据。并且转换的字符串数组中串中的整数内容可由任何不是该整数的一部分的字符终止,如空白符、标点符号和字符等。 
1.1 atof 
  函数原型: double atof(char *str) 
  函数功能: 将字符串转换成一个双精度数值 
  函数返回: 转换后的数值 
  参数说明: str-待转换浮点型数的字符串 
1.2 atoi 
  函数原型: int atoi(char *str) 
  函数功能: 将字符串转换成一个整数值 
  函数返回: 转换后的数值 
  参数说明: str-待转换为整型数的字符串 
1.3 atol 
  函数原型: long atol(char *str) 
  函数功能: 将字符串转换成一个长整数 
  函数返回: 转换后的数值 
  参数说明: str-待转换为长整型的字符串 
2.1 strtol/strtof/strtod 
  函数功能:分别是将字符串数组转换为长整数值、单浮点数、双浮点。 
  函数原型: 
     long int strtol(const char *nptr,char **endptr,int base); 
     float strtof(const char *nptr, char **endptr); 
     double strtod(const char *nptr,char **endptr); 
  参数说明: 
  strtol不仅可以识别十进制整数,还可以识别其它进制的整数,取决于base参数,base取值2~36。 
  endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。例如char *pos; strtol(“123abc”, &pos, 10);,strtol返回123,pos指向字符串中的字母a。如果字符串开头没有可识别的整数,例如char *pos; strtol(“ABCabc”, &pos, 10);,则strtol返回0,pos指向字符串开头,可以据此判断这种出错的情况,而这是atoi处理不了的。 
  使用举例:

char *nzArr  = "   12356";
char *nzArr1 = "   123.22a56";
char *nzArr2 = "   21.222ab";
char *nzptr ;
long   lNum  = strtol(nzArr,&nzptr,10); //结果:12356
double dNum  = strtod(nzArr1,&nzptr);   //结果:123.22,nzptr指向a(未识别处)
double dAtof = atof(nzArr2);            //结果:21.222
int    nNum  = atoi(nzArr);             //结果:12356

转自: https://blog.csdn.net/fx677588/article/details/52966752

猜你喜欢

转载自blog.csdn.net/grllery/article/details/82596739