转载地址:http://www.habadog.com/2011/05/07/boost-lexical_cast-intro/

一、lexical_cast的作用
lexical_cast使用统一的接口实现字符串与目标类型之间的转换。

二、lexical_cast与c/c++提供类似接口的比较
标准c家族中包含此类函数,例如atoi与itoa等,它们的缺点是:
(1)各个转换都是单向的,双向转换为不同函数,各种转换函数不同,接口众多;
(2)仅支持基础数据类型的子集,如int,long,double;
(3)不能提供统一的接口,易用性差;

c++中提供了stringstream,使用它进行格式转换可读性较差,使用起点较高,只是简单的转换,stringstream太重量级。

boost提供了lexical_cast,使用统一接口形式实现任意类型之间的转换,增强了易用性。但如果需要严密控制精度的转换,仍然推荐使用stringstream;数值之间的转换,推荐使用numeric_cast。

三、lexical_cast的接口形式

1
2
3
template<typename target,="" typename="" source="">
Target lexical_cast(const Source& arg);
</typename>

四、lexical_cast的样例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "iostream"
#include "boost/lexical_cast.hpp" // 需要包含的头文件
 
using boost::lexical_cast;
using boost::bad_lexical_cast;
using namespace std;
 
int main()
{
    char* p="32768";
    int i=0;
    try
    {
        i=lexical_cast<int>(p); // 将字符串转化为整数
    }
    catch(bad_lexical_cast&)    // 转换失败会抛出一个异常
    {
        i=0;
    }
    cout << i << endl;
    return i;
}
</int>

最新文章

  1. MVC 导出Excel 的其中一方法(View导出excel)
  2. 加密算法使用(二):使用MD5加密字符串(另:byte数组转16进制自动补零方法写法)
  3. jquery.blockUI.2.31.js 弹出层项目介绍
  4. Node.js log1: ERR can not find module express
  5. 组件接口(API)设计指南-文件夹
  6. PHP+NGINX
  7. thinkphp框架的大D方法应用
  8. [BZOJ]3671 随机数生成器(Noi2014)
  9. AngularJS 截取字符串
  10. 【ShaderToy】新玩家~❤
  11. Lecture5_1&amp;5_2.随机变量的数字特征(数学期望、方差、协方差)
  12. Taro button点击切换选中状态
  13. Es6模块语法笔记
  14. Selenium环境搭建---C#
  15. (17)线程队列---queue LifoQueue PriorityQueue
  16. 自己动手实现java数据结构(三) 栈
  17. MySQL中的存储过程和函数使用详解
  18. 2017-2018-1 20155219《信息安全技术》实验二——Windows口令破解
  19. nodejs开篇基础&lt;①&gt;
  20. python常用内置模块

热门文章

  1. Android View中滚动相关
  2. BigDecimal 实际测试结果
  3. codeforces 702D D. Road to Post Office(数学)
  4. PowerDesigner 连接 MySQL 并生成逆向工程图
  5. inline关键字的用法详解
  6. Azure Key Vault (3) 在Azure Windows VM里使用Key Vaule
  7. windows兼容dirent.h
  8. web.xml中load-on-startup的作用,web应用写一个InitServlet,这个servlet配置为启动时装载
  9. Apple Tree
  10. ubuntu系统下挂载新的硬盘