设为首页 加入收藏

TOP

秘笈13 将字符串转换为数值
2014-05-12 09:46:09 来源: 作者: 【 】 浏览:254
Tags:秘笈 字符串 转换 数值

第2章 数据转换

我们已经知道了一些基本的Boost类型,现在来了解一些数据转换的函数。在本章中,我们将看到字符串、数值和用户定义类型如何互相转换,如何安全地强制转换多态类型,以及如何在C++源文件里面编写小型和大型解析器。

秘笈13 将字符串转换为数值

C++中将字符串转换为数值使很多人感到沮丧,因为其效率低下并且用户难于操控它。让我们来看看如何将字符串100转换为int类型:

C方法也好不了多少:

准备

这个秘笈只需要有 C++和STL的基础知识。

做法

Boost中有一个库,其将有助于解决使人郁闷的字符串向数值转换的困难。这个库称为Boost.LexicalCast,它由一个boost:: bad_lexical_cast异常类和少数 boost::lexical_cast函数组成:

它甚至可以被用于非零结尾的字符串:

工作原理

boost::lexical_cast函数接受字符串作为输入,并将其转换成尖括号中指定的类型。boost::lexical_cast函数甚至还会检查边界:

并且检查输入的语法是否正确:

还有更多

词汇强制转换(lexical_cast)就像所有使用std::locale的std::stringstreams类一样,它也使用std::locale,并且能对本地化数值做转换, 还有一系列引人注目的优化,专门针对C locale(语言环境)以及对数值不进行分节的语言环境:

而这还不是全部!你甚至可以简单地创建用于将其他类型转换为数值的模板函数。让我们编写一个函数,将一个包含一些string值的容器转换为long int值的向量:

 

参见

参考秘笈14中的boost::lexical_cast性能信息。

Boost.LexicalCast的官方文档包含一些例子、性能措施以及常见问题的答案。可从以下地址查看这些资料:http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast.html
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇跨越语言的障碍:C++/CLI 调用 C# 下一篇秘笈14 将数值转换为字符串

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)