自己在写程序的时候经常用到保存大量的图片,从而对其编号,所以要把整型转换成字符型。
通常自己定义string,而字符使用char[],把整形转换成char类型,然后和string类型相加,但是在VS2012中遇到了The POSIX name for this item is deprecated. Instead, use the ISO C++ conform错误。
解决方法:
1.应该是安全性问题,我使用了_itoa_s函数,不过这个函数使用4个参数,有问题大家可以搜索这个函数的用法。参考如下:
_itoa_s 函数原型如下: errno_t _itoa_s( int value,char *buffer,
size_t sizeInCharacters, //存放结果的字符数组长度
int radix);
2.网上别人重写了这个函数,代码如下(好像负数会有问题)。
char* IFLY_itoa(int nValue, char *szString, int radix) { int i=0, Len=0; int nTemp=nValue; char *lpString=szString; /* 获得符号 */ if(nValue <0) { lpString[0] = '- '; lpString++; nTemp *= -1; } /* 倒序录入szString */ for(i=0; nTemp != 0 ; i++) { lpString[i] = nTemp%radix; /* 进行数值向符号的转化 */ if(lpString[i] <=9) { lpString[i] += 0x30; } else { lpString[i] += 0x37; } nTemp /= radix; } /* 解决0的问题 */ if(i==0) { lpString[0] = 0x30; i++; } /* 获得正确的顺序 */ Len = i; for(i=0; i < (Len/2); i++) { nTemp = lpString[i]; lpString[i] = lpString[Len-i-1]; lpString[Len-i-1] = nTemp; } lpString[Len] =0; return szString; };