设为首页 加入收藏

TOP

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

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

在这个秘笈中,我们将继续讨论词汇的转换,但现在使用Boost.LexicalCast将数值转换为字符串。和往常一样,boost::lexical_cast将提供一个非常简单的方法来转换数据。

准备

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

做法

1.使用boost::lexical_cast将整数100转换为std::string:

2.将此法与传统的C++的转换方法相比较:

与C的转换方法对比:

工作原理

boost::lexical_cast函数也接受数值作为输入,并将其转换为在尖括号中指定的字符串类型。这很接近我们在以前的秘笈中所做的事情。

还有更多

细心的读者会注意到,在lexical_cast的情况下,对字符串复制构造函数有一个额外的调用,而这样的调用对性能将是一个打击。这是事实,但仅限于旧的或差劲的编译器。现代编译器实现了命名返回值优化(Named Return Value Optimizationk, NRVO),其将消除对复制构造函数和析构函数不必要的调用。即使C++11兼容编译器不检测NRVO,也将使用std::string的移动复制构造函数,其速度快并且效率高。Boost.LexicalCast文档的性能部分显示了不同类型的不同编译器的转换速度,并且在大多数情况下,lexical_cast的速度比std::stringstream和printf函数的速度都快。

如果将boost::array或std::array作为输出参数类型传递给boost::lexical_cast,只会发生较少的动态内存分配(或者根本不会发生内存分配,这取决于std::locale的实现)。

参见

Boost的官方文档中包含lexical_cast与其他转换方法的性能的比较表格。而且在大多数情况下,lexical_cast获胜。该文档位于http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast.html,其中也有一些其他的例子和常见问题的解答。

参考秘笈13。

参考秘笈16。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇秘笈13 将字符串转换为数值 下一篇秘笈15 将数值转换为数值

评论

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

·在 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)