|  | Home | Libraries | People | FAQ | More | 
      Boost.Convert builds on the boost::lexical_cast
      experience and takes those type conversion/transformation-related ideas further
    
Boost.Convert provides new and familiar conversion/transformation-related functionality such as:
Boost.Convert consists of two components:
boost::convert()
          interface;
        
      The boost::convert()
      interface
    
      The collection of pluggable converters is independent of the boost::convert() API facade and is designed to be extendible
      and extended over time. Currently the following converters are provided:
    
boost::lexical_cast-based,
        printf/scanf-based,
        strtol-inspired,
        std::stringstream-based,
        boost::spirit-based.
        
      The converters provide new and familiar functionality and demonstrate how existing
      and independent conversion facilities might be incorporated in to the Boost.Convert
      framework. For example, the std::stream-based
      converter draws on the standard std::streams
      functionality and provides:
    
std::ios-based
          precision, base, upper/lower-case, scientific, etc.);
        locales;
        char and wchar_t
          support.
        The following code demonstrates conversion of an array of integers from their textual hexadecimal representation. It assigns -1 to those which fail to convert:
std::array<char const*, 3> strs = {{ " 5", "0XF", "not an int" }}; std::vector<int> ints; boost::cnv::cstream cnv; // Configure converter to read hexadecimal, skip (leading) white spaces. cnv(std::hex)(std::skipws); std::transform(strs.begin(), strs.end(), std::back_inserter(ints), boost::cnv::apply<int>(std::cref(cnv)).value_or(-1)); BOOST_TEST(ints.size() == 3); // Number of values processed. BOOST_TEST(ints[0] == 5); // " 5" BOOST_TEST(ints[1] == 15); // "0XF" BOOST_TEST(ints[2] == -1); // "not an int"