C++下高效率int转成string

来源:互联网 发布:sybase数据库win7 64 编辑:程序博客网 时间:2024/06/08 13:18

很多时候一直会烦恼int如何转换成string,毕竟c++不像java有各种各样的库。在windows下有itoa,在linux下则没有。

虽然我们可以使用sprintf,但终究还是有些不得劲。最近看到了一个Matthew Wilson的《Efficient Integer to String Conversions》,跟大家分享一下

int convert(char buf[], int value){    static char digits[19] = {        '9','8','7','6','5','4','3','2','1','0',        '1','2','3','4','5','6','7','8','9'    };    static const char* zero = digits + 9;//zero->'0'    int i = value;    char *p = buf;    do{        int lsd= i%10;        i/=10;        *p++ = zero[lsd];    }while( i!=0 );    if(value <0)        *p++ = '-';    *p = '\0';    std::reverse(buf,p);    return p - buf;}

其中的算法就不再多说,有兴趣的可以自己去看看原文章,经测试,这个和sprintf效率差不多,甚至更快!大笑

0 1