第一次翻译,虽然是个很简单的函数介绍...

文件boost/lexical_cast.hpp中定义了此函数:

[cpp] view plaincopy
  1. namespace boost
  2. {
  3. class bad_lexical_cast;
  4. template<typename Target, typename Source>
  5. Target lexical_cast(const Source& arg);
  6. template <typename Target>
  7. Target lexical_cast(const AnyCharacterType* chars, std::size_t count);
  8. }

第一种形式:

输出流参数的结果到一个基于字符串的标准库流中,并返回为Target对象。如果Target是 std::string或者std::wstring,则输入流将提取字符串的全部内容,包括空格,而不是使用操作符operator>>的默认行为。如果lexical_cast转换错误,将抛出bad_lexical_cast异常。

第二种形式:

大小为count的数组作为输入参数,转换返回Target对象。如果lexical_cast转换错误,将抛出bad_lexical_cast异常。这种形式可能对处理非0结尾的字符串数组或字符数组的某一部分很有用。

要求:

1. Source必须是一个可以输出到输出流的类型(OutputStreamable),也就是Source类型定义了operator<<操作符:一个std::ostream或者std::wostream对象在其左边,参数类型实例在右边

2. Target必须是一个可以输入到输入流的类型(InputStreamable),也就是该类型定义了operator>>操作符

3. Target定义了拷贝构造函数(CopyConstructible )

4. Target定义了默认构造函数(DefaultConstructible)

【http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast】

------------------------------------------------------------------------------------------------

其他资料:

一、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的样例

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

【http://www.habadog.com/2011/05/07/boost-lexical_cast-intro/】

转载于:https://www.cnblogs.com/diegodu/p/6183877.html

boost之lexical_cast相关推荐

  1. boost:lexical_cast

    概述 顾名思义,lexical_cast库进行"字面值"的转换,类似C中的atoi()函数,可以进行字符串与整数/浮点数之间的字面转换 标准C和c++库提供了许多用于执行此类转换的 ...

  2. boost::convert模块实现lexical_cast的测试程序

    boost::convert模块实现lexical_cast的测试程序 实现功能 C++实现代码 实现功能 boost::convert模块实现lexical_cast的测试程序 C++实现代码 #i ...

  3. C++ boost::lexical_cast

    1. lexical_cast是boost中的一个库, 主要用于数值与字符串的相互转换.boost 的 lexical_cast 能把字符串转成各种 c++ 内置类型,需要包含头文件: #includ ...

  4. boost::convert模块实现算法的测试程序

    boost::convert模块实现算法的测试程序 实现功能 C++实现代码 实现功能 boost::convert模块实现算法的测试程序 C++实现代码 #include <boost/con ...

  5. 写一个Windows上的守护进程(4)日志其余

    写一个Windows上的守护进程(4)日志其余 这次把和日志相关的其他东西一并说了. 一.vaformat C++日志接口通常有两种形式:流输入形式,printf形式. 我采用printf形式,因为流 ...

  6. boost::lexical_cast用法的测试程序

    boost::lexical_cast用法的测试程序 实现功能 C++实现代码 实现功能 boost::lexical_cast用法的测试程序 C++实现代码 #include <boost/m ...

  7. boost::lexical_cast模块将创建一个to_long_double方法,将 Boost.Variant 的值转换为long double

    boost::lexical_cast模块将创建一个to_long_double方法,将 Boost.Variant 的值转换为long double 实现功能 C++实现代码 实现功能 boost: ...

  8. boost::lexical_cast模块测试 Source 是否不可复制

    boost::lexical_cast模块测试 Source 是否不可复制 实现功能 C++实现代码 实现功能 boost::lexical_cast模块测试 Source 是否不可复制 C++实现代 ...

  9. boost::lexical_cast

    编译有boost库即可 不需要加特殊编译命令 #include <iostream> #include <boost/lexical_cast.hpp> #include &l ...

最新文章

  1. ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
  2. 金秋十月正当时,未知君招人啦!
  3. HTML基础:文本列表实例2(9)
  4. Axis,axis2,Xfire以及cxf对比 (转)
  5. nutsdb与mysql_分享下 nutsdb 单机 1 亿、10 亿数据实测
  6. VLC详细的使用说明以及配置说明综合示范实例精通VLC开发
  7. 全国计算机四六级报名时间2015,2015年英语四六级口语考试报名时间:10月25日起...
  8. 随想录(ros学习笔记)
  9. 我为什么反对 Google 拍卖 Android 搜索引擎选项?
  10. linux之git入门命令
  11. WhatsApp被曝内部收集用户数据
  12. redhat5下安装informix
  13. 垃圾文件粉碎机 防止恢复保安全
  14. 《OpenGL编程指南(原书第9版)》——第1章 1.0OpenGL概述
  15. 服务器接千兆无线网卡,用户吓跑!千兆宽带就是坑爹货:真相崩溃
  16. python小课笔记_小甲鱼Python第一讲笔记(个人笔记)
  17. 计算机平面设计是什么学的什么,计算机平面设计主要学什么?
  18. php给页面加背景图片,html怎么添加背景图片且让图片平铺整个页面?(代码示例)...
  19. JAVA(五) ——类,对象,变量,方法,构造方法 【简解】
  20. 用python做软件_女友闹别扭不用担心,Python做个软件轻松哄好

热门文章

  1. AI现状 人才短缺成为障碍
  2. 巨人网络李东旭:关于提高游戏流畅性的那些事
  3. 【蓝桥杯Java_C组·从零开始卷】第三节(附)、for循环练习题(数据题与图形题)
  4. SecureCRT 遇到一个致命的错误且必须关闭
  5. 三星I9000挖煤模式和R模式进入方法
  6. vi / vim 字符替换详解
  7. ubuntu修改pip的官方源为豆瓣源
  8. 一款基于jquery带百分比的响应式进度加载条
  9. wpf控件提示Value ‘’ can not convert
  10. 【转】理解JavaScript中的事件处理