http://www.boost.org/doc/libs/1_51_0/doc/html/boost_lexical_cast/performance.html
考虑这个链接,字符串到字符串非常快。
所有测试都以毫秒为单位测量以下代码块的 10000 次迭代的执行速度:
typedef BOOST_DEDUCED_TYPENAME ::boost::type_traits::ice_or<
::boost::detail::is_xchar_to_xchar<Target, src >::value,
::boost::detail::is_char_array_to_stdstring<Target, src >::value,
::boost::type_traits::ice_and<
::boost::is_same<Target, src >::value,
::boost::detail::is_stdstring<Target >::value
>::value
> shall_we_copy_t;
在我们的例子shall_we_copy_t::value
中是正确的,因为第三种情况对我们有用(Target
并且src
是相等的类型并且Target
类型是std::basic_string
)。
typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c<
shall_we_copy_t::value,
::boost::detail::lexical_cast_copy<src >,
BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c<
shall_we_copy_with_dynamic_check_t::value,
::boost::detail::lexical_cast_dynamic_num<Target, src >,
::boost::detail::lexical_cast_do_cast<Target, src >
>::type
>::type caster_type;
因为,shall_we_copy_t::value
是真的,我们的 caster_type 将是lexical_cast_copy
return caster_type::lexical_cast_impl(arg);
所以,会被调用lexical_cast_copy::lexical_cast_impl
,这很简单
template <typename Source>
struct lexical_cast_copy
{
static inline Source lexical_cast_impl(const Source &arg)
{
return arg;
}
};