Boost的lexical_cast可以将数字(或任意对象)转换为字符串,然后再转换回来。我是否应该尝试更多地使用它,比如,而不是将内容流式传输到std::stringstreams?或者它更多的是一种最后的机制?
下面是两种替代方法的一个示例:
std::stringstream message;
message << "foo " << bar << ' ' << baz;
doSomething(message.str());或
doSomething("foo " + lexical_cast<string>(bar) + " " + lexical_cast<string>(baz));(但请注意,我的问题更一般)。
发布于 2014-07-21 18:49:31
词法类型转换并不“主要”转换数字。这是一种用于任何文本流传输的机制。是的,这要看情况。我可以免费使用lexical_cast,但根据用例,我会毫不犹豫地使用std::stoi、std::to_string、Boost {Spirit|Format|Serializaton}。
简而言之:这是,而不是,一种最后的机制。这也不是万能的解决方案。
背景
发布于 2014-07-21 18:42:40
我要说的是,在将字符串转换为数字时,您应该始终使用lexical_cast,因为如果没有它,您将无法知道它是否真的是一个数字(糟糕的词法转换异常)。字符串流不会抛出任何东西,并保留未初始化的数字。
https://stackoverflow.com/questions/24863080
复制相似问题