VS2008中的_itoa_s使用说明

http://haixiang189.blog.163.com/blog/static/31647695201141135131234/

在C++的程序开发中,经常需要将不同基本类型的值进行转换,在VS2008中的VC项目中,如果直接用itoa这个函数,在编译的时候会有警告说让你用_itoa,然后你用_itoa的时候呢,它又有警告说要用_itoa_s这个函数才行。

_itoa_s和itoa是有区别的,_itoa_s(int ,char *,int ,int )有四个参数,比itoa的参数个数要多一些,_itoa_s函数的四个参数的意思分别是:
第一个参数是你要转换的整形变量
第二个参数是转换后存放结果的字符串指针
第三个参数是第一个参数的进制表示,如二进制,十进制,八进制,16进制这样的值。

这里有问题,第三个参数应该是字符长度

http://msdn.microsoft.com/en-us/library/0we9x30h(v=vs.80).aspx(参见msdn)

函数原型:

errno_t _itoa_s(
   int value,
   char *buffer,
   size_t sizeInCharacters,
   int radix 
);
第四个参数是转换后的字符串结果数的进制表示,如二进制,十进制,八进制,16进制这样的值,

   这是在VS中的方法,不过还是建议多用标准C++中的函数,这样如果存在代码移植的情况时,需要改动的就小很多了。然而在实际的应用当中,还是建议大家用sprintf这个函数,在VS中用这个函数会有警告,没关系,可以不理它,用它的好处时,将数字类型的值转为相用的字符串时,可以格式化,即不足位可以自动补0进行占位,而_itoa_s则不会自动进行补位,很多时侯我们是需要固定长度的字符串的,这种情况下_itoa_s就麻烦一些,需要自己另外去补齐,而sprintf这个函数恰恰能自动完成这个过程,例如要把254转为固定4个字符的16进制字符串:
char str[4];
memset(str,0,4);
sprintf(254,"%04X",str);
这样处理后,字符串str的值是00FE,前面的不足位自动补0进行占位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值