后来发现linux头文件根本就没有提供itoa函数。itoa不是标准C语言库函数,而是非标准的扩展函数。所以并不是所有的编译器都会支持的。这不就遇见了GCC4.8.5不支持这个函数了。只不过,VC编译器在stdlib中包含了这个函数。
itoa这样的小函数,非常的实用,没有提供在标准库函数里,有点遗憾。
当然,想实现这个也是太容易的事情,只是多了点代码而已。下面就是简单的实现:
string itoa(int num)
{
char buf[100]={0};
sprintf(buf,"%d",num);
return string(buf);
}
我们这里就不用char*指针,因为内部分别的数组,在函数结束时内存会释放。返回的指针指向一个被释放的内存是违规的内存操作。而使用string可以以传值的形式返回内容,没有问题。当然只要是传值都行。如果是传指针的话,那数组还得是你传进来的。不过传数组地址进来,函数使用也就不那么方便了。
本文主要是对Linux的GCC没有支持itoa函数做一个记录,以免以后忘记了找半天,也供大家了解一下。