C++中不同类型数据之间的转换(调用库函数)

C++标准库为我们提供了不少库函数用以支持数据类型的转换,总结了以下几个:

1.sprintf函数

      在将各种类型的数据构造成字符串时,sprintf 的功能很强大。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。

       sprintf 是个变参函数,定义如下:
        int sprintf( char *buffer, const char *format [, argument] ... );
  除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数;

       例如:sprintf(s, "%d", 123); //产生"123"

                  sprintf(s, "%f", 3.1415926); //产生"3.141593"

                  sprintf(s, "%.2f", i);   //错误

                 sprintf(s, "%.2f", (double)i); //错误

       错误原因分析:参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是保存整数i 的那4 个字节就被强行作为浮点数格式来解释了,这样就整个乱套了。

2.stringstream对象

       由于数据的类型在编译期就确定了,所以编译器拥有足够的信息来判断需要哪些转换。<sstream>库中声明的标准类就利用了这一点,自动选择所必需的转换。而且,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值