博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] boost:lexical_cast用法
阅读量:5794 次
发布时间:2019-06-18

本文共 991 字,大约阅读时间需要 3 分钟。

转载地址:

一、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
>

转载于:https://www.cnblogs.com/457220157-FTD/p/4835981.html

你可能感兴趣的文章
分享自制的C#和VB Code互转工具
查看>>
什么样的日志才是好日志
查看>>
dll和ocx比较
查看>>
排序算法c语言描述---冒泡排序
查看>>
OpenGL ES 系列教程
查看>>
Effective STL中文版 译序
查看>>
NodeJS应用程序设置为window service-辅助工具(C#)
查看>>
如何用ATL创建ActiveX控件
查看>>
又见到面试的毕业生
查看>>
广州项目实施步骤I_练习安装 CentOS x64 6.4
查看>>
solr4使用时常见异常及处理(转)
查看>>
C++ 排序函数 sort(),qsort()的使用方法
查看>>
atitit。获取表格的字段注释metadata的原理以及AND 字段表格描述文档方案
查看>>
那些年实用但被我忘掉javascript属性.onresize
查看>>
AngularJS是什么?
查看>>
protobuf for java
查看>>
蜕变成蝶~Linux设备驱动中的阻塞和非阻塞I/O
查看>>
spring 学习的开源项目
查看>>
查看软件的编译参数
查看>>
Android动画效果translate、scale、alpha、rotate详解
查看>>