Boost组件lexical_cast

1 字符串→数值
下面先讨论一下从字符串类型到数值类型的转换。

如何将字符串”123”转换为int类型整数123?答案是,用标准C的库函数atoi;

如果要转换为long类型呢?标准C的库函数atol;

如何将”123.12”转换为double类型呢?标准C的库函数atod;

如果要转换为long double类型呢?标准C的库函数atold;

……

使用Boost Conversion Library所提供的函数lexical_cast(需要引入头文件boost/lexical_cast.hpp)是最简单方便的。如:

#include <boost/lexical_cast.hpp>
#include <iostream>
 using namespace boost::lexical_cast;
int main(){       
   double b = lexical_cast<double>("123.12"); 
   std::cout<<a<<std::endl        
   std::cout<<b<<std::endl;        
   return 0;
}

一个函数就简洁地解决了所有的问题。

2 数值→字符串
那么从数值类型到字符串类型呢?
用itoa?不对吧,标准C/C++里根本没有这个函数。即使在Windows平台下某些编译器提供了该函数3,没有任何移植性不说,还只能解决int类型(也许其他函数还可以解决long、unsigned long等类型),浮点类型又怎么办?当然,办法还是有,那就是:sprintf。

char s[100];
sprintf(s, "%f", 123.123456);

lexical_cast的#include

#include <string>
#include <iostream>
using namespace std;   

int main(){       
     string s = boost::lexical_cast<string>(d);
     std::cout<<s<<std::endl;
     return 0;
     }

跟前面一样简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的资料库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值