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/