Boost' lexical_cast
,它将数字(或任意对象)转换为字符串并返回。我应该尝试更多地使用它,而不是将内容流式传输到std::stringstream
s?或者它更像是一种最后手段?
这是两种替代方法的一个例子:
std::stringstream message;
message << "foo " << bar << ' ' << baz;
doSomething(message.str());
或
doSomething("foo " + lexical_cast<string>(bar) + " " + lexical_cast<string>(baz));
(但请注意我的问题更为一般)。
答案 0 :(得分:1)
词汇演员不会“大部分”转换数字。它是任何文本可流动的机制。是的,这取决于。我自由使用lexical_cast,但我会毫不犹豫地根据用例使用std :: stoi,std :: to_string,Boost {Spirit | Format | Serializaton}。
简而言之:它是不最后的机制。它也不是 end-all-all-all 解决方案。
背景
答案 1 :(得分:0)
我会说你在将字符串转换为数字时应该总是使用lexical_cast,因为没有它你就不会知道它是否真的是一个数字(错误的词法转换异常)。字符串流不会抛出任何内容并使数字保持未初始化状态。