atoi()与strtol()

来源:互联网 发布:贝叶斯分类算法 编辑:程序博客网 时间:2024/05/17 00:09

     1、atoi()是C标准库函数,获得字符串对应整形值,函数原型:int atoi(const char *nptr);,类似的还有strtoul(),_atoi64(),_strtoui64(),atof()、_ttoi()、_ttoi64()、_ttof()。

     2、strtol()是atoi()的增强版,函数原型:long int strtol(const char *nptr, char **endptr, int base); ,特点为:

           1.不仅可以识别十进制整数,还可以识别其它进制的整数,取决于base参数,比如strtol("0XDEADbeE", NULL, 16)返回值为0xDEADbeE
           2.endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。例如char *pos; strtol("123abc", &pos, 10);,strtol返回123,pos指向字符串中的字母a。如果字符串开头没有可识别的整数,例如char *pos; strtol("ABCabc", &pos, 10);,则strtol返回0,pos指向字符串开头,可以据此判断这种出错的情况,而这是atoi处理不了的。
           3.如果字符串中的整数值超出long int的表示范围(上溢或下溢),则strtol返回它所能表示的最大(或最小)整数,并设置errno为ERANGE,例如strtol("0XDEADbeef~~", NULL, 16)返回0x7fffffff并设置errno为ERANGE

     3、itoa()是非标准库函数,获得整形数值对应的字符串类型,不过很多编译器支持该函数j,函数原型,char*itoa(intvalue,char*string,int radix);类似的还有_i64toa(),_ui64toa();

     4、使用stringstream流对象可以很方便的实现字符串和对应数值之间的转换,如
#include "stdafx.h"#include "iostream"#include "string"#include "sstream"using std::string;using std::stringstream;int _tmain(int argc, _TCHAR* argv[]){stringstream strStream;char *p = "123456";int i;strStream << p;strStream >> i;//i为123456strStream.clear();int num = 123456;string str;strStream << num;strStream >> str;//str为"123456"return 0;}
  

0 0
原创粉丝点击