秘笈16 用户定义类型与字符串的相互转换
Boost.LexicalCast还有一个功能就是允许用户在lexical_cast中使用他们自己的类型。此功能只需要用户为他们的类型编写正确的std::ostream和std::istream操作符。
做法
1.只需要提供operator<<和operator>>流操作符。如果你的类已是可流化的,那么不需要做任何事情:

2.现在,可以使用boost::lexical_cast将negative_number类与其他类的对象相互转换。下面是一个例子:

工作原理
boost::lexical_cast函数可以检测并使用流操作符来转换用户定义类型。
Boost.LexicalCast库对基本类型有很多优化,当一个用户定义类型被强制转换为基本类型或一个基本类型被强制转换为用户定义类型时,它们将被触发。
还有更多
boost::lexical_cast函数也可以转换为宽字符字符串,但这需要正确的basic_istream和basic_ostream运算符重载:

Boost.LexicalCast库不属于C++11,但已有提议将它添加到C++标准中。很多Boost库都使用它,我希望它也能够使你的工作更轻松。
参见
Boost.LexicalCast文档包含了一些例子、性能指标以及常见问题的答案,可以在下面地址查看该文档:http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast.html。
参考秘笈13。
参考秘笈14。