上篇文章说到linux需要itoa函数,下面我就提供一份跨平台的itoa函数。
这个函数会返回字符串的长度,在某些场合下会很有用。
//return the length of result string. support only 10 radix for easy use and better performance int my_itoa(int val, char* buf) { const unsigned int radix = 10; char* p; unsigned int a; //every digit int len; char* b; //start of the digit char char temp; unsigned int u; p = buf; if (val < 0) { *p++ = '-'; val = 0 - val; } u = (unsigned int)val; b = p; do { a = u % radix; u /= radix; *p++ = a + '0'; } while (u > 0); len = (int)(p - buf); *p-- = 0; //swap do { temp = *p; *p = *b; *b = temp; --p; ++b; } while (b < p); return len; }
这个实现的典型速度大概是180毫秒左右。作为对比,MFC自带的itoa耗时是320毫秒左右。用snprintf的实现就不要出来比速度了,不是一个级别的。
原文链接: https://www.cnblogs.com/hehe520/archive/2010/01/05/6330423.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/6385
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!