Boost::Lexical_Cast的使用

来源:互联网 发布:java base64 编辑:程序博客网 时间:2024/06/05 07:19

1、字符串到数值类型的转换

2、数值到字符串的转换

3、异常处理情况

4、boost::lexical_cast 的原型:

template<typename Target, typename Source>
    Target lexical_cast(Source arg);

lexical_cast是依赖于字符串流std::stringstream的,其原理也是相当的简单: 把源类型 (Source) 读入到字符流中,再写到目标类型 (Target) 中。

但这里同时也带来了一些限制:
  - 输入数据 (arg) 必须能够 “完整” 地转换,否则就会抛出 bad_lexical_cast 异常;

  - 由于 Visual C++ 6 的本地化(locale)部分实现有问题,如果使用了非默认的 locale,可能会莫名其妙地抛出异常。
  - 源类型 (Source) 必须是一个可以输出到输出流的类型(OutputStreamable),也意味着该类型需要 operator<< 被定义。
  - 同样的,目标类型 (Target) 必须是一个可以输入到输入流的类型 (InputStreamable),也意味着该类型需要 operator>> 被定义。
  - 另外,Both Source and Target are CopyConstructible。
  - Target is DefaultConstructible。



0 0