[转] boost:lexical_cast用法
2024-09-30 02:38:20
转载地址: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 > |
最新文章
- MVC 导出Excel 的其中一方法(View导出excel)
- 加密算法使用(二):使用MD5加密字符串(另:byte数组转16进制自动补零方法写法)
- jquery.blockUI.2.31.js 弹出层项目介绍
- Node.js log1: ERR can not find module express
- 组件接口(API)设计指南-文件夹
- PHP+NGINX
- thinkphp框架的大D方法应用
- [BZOJ]3671 随机数生成器(Noi2014)
- AngularJS 截取字符串
- 【ShaderToy】新玩家~❤
- Lecture5_1&;5_2.随机变量的数字特征(数学期望、方差、协方差)
- Taro button点击切换选中状态
- Es6模块语法笔记
- Selenium环境搭建---C#
- (17)线程队列---queue LifoQueue PriorityQueue
- 自己动手实现java数据结构(三) 栈
- MySQL中的存储过程和函数使用详解
- 2017-2018-1 20155219《信息安全技术》实验二——Windows口令破解
- nodejs开篇基础<;①>;
- python常用内置模块
热门文章
- Android View中滚动相关
- BigDecimal 实际测试结果
- codeforces 702D D. Road to Post Office(数学)
- PowerDesigner 连接 MySQL 并生成逆向工程图
- inline关键字的用法详解
- Azure Key Vault (3) 在Azure Windows VM里使用Key Vaule
- windows兼容dirent.h
- web.xml中load-on-startup的作用,web应用写一个InitServlet,这个servlet配置为启动时装载
- Apple Tree
- ubuntu系统下挂载新的硬盘