首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候应该使用Boost的lexical_cast?这是一种最后的手段吗?

什么时候应该使用Boost的lexical_cast?这是一种最后的手段吗?
EN

Stack Overflow用户
提问于 2014-07-21 18:37:41
回答 2查看 438关注 0票数 2

Boost的lexical_cast可以将数字(或任意对象)转换为字符串,然后再转换回来。我是否应该尝试更多地使用它,比如,而不是将内容流式传输到std::stringstreams?或者它更多的是一种最后的机制?

下面是两种替代方法的一个示例:

代码语言:javascript
运行
复制
std::stringstream message;
message << "foo " << bar << ' ' << baz;
doSomething(message.str());

代码语言:javascript
运行
复制
doSomething("foo " + lexical_cast<string>(bar) + " " + lexical_cast<string>(baz));

(但请注意,我的问题更一般)。

EN

回答 2

Stack Overflow用户

发布于 2014-07-21 18:49:31

词法类型转换并不“主要”转换数字。这是一种用于任何文本流传输的机制。是的,这要看情况。我可以免费使用lexical_cast,但根据用例,我会毫不犹豫地使用std::stoi、std::to_string、Boost {Spirit|Format|Serializaton}。

简而言之:这是,而不是,一种最后的机制。这也不是万能的解决方案。

背景

  • 一个常见的反对意见是lexical_cast会很慢。这种情况很少出现,因为它已经专门用于公共原语类型
  • ,lexical_cast的接口仅适用于分析永远不会/很少失败的情况;否则,最好使用报告输入验证错误而没有异常的接口
票数 1
EN

Stack Overflow用户

发布于 2014-07-21 18:42:40

我要说的是,在将字符串转换为数字时,您应该始终使用lexical_cast,因为如果没有它,您将无法知道它是否真的是一个数字(糟糕的词法转换异常)。字符串流不会抛出任何东西,并保留未初始化的数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24863080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档