gpt4 book ai didi

c++ - 我应该什么时候使用 Boost 的 lexical_cast?它是不得已的机制吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:40 24 4
gpt4 key购买 nike

Boost 的 lexical_cast 将数字(或任意对象)转换为字符串并返回。我是否应该尝试更多地使用它,而不是将内容流式传输到 std::stringstream?或者它更像是一种不得已的机制?

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

std::stringstream message;
message << "foo " << bar << ' ' << baz;
doSomething(message.str());

doSomething("foo " + lexical_cast<string>(bar) + " " + lexical_cast<string>(baz));

(但请注意我的问题更笼统)。

最佳答案

词法转换并不是“主要”转换数字。它是任何可传输文本的机制。是的,这取决于。我自由地使用 lexical_cast,但我会根据用例毫不犹豫地使用 std::stoi、std::to_string、Boost {Spirit|Format|Serializaton}。

简而言之:它不是一种最后手段机制。它也不是 end-all-be-all 解决方案。


背景

  • 一个普遍的反对意见是 lexical_cast 会很慢。这种情况很少(不再),因为它专门用于常见的基本类型
  • lexical_cast 接口(interface)只适用于解析永远不会/很少失败的情况;否则更喜欢无一异常(exception)地报告输入验证错误的界面

关于c++ - 我应该什么时候使用 Boost 的 lexical_cast?它是不得已的机制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24863080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com