printf_converter.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Boost.Convert test and usage example
  2. // Copyright (c) 2009-2016 Vladimir Batov.
  3. // Use, modification and distribution are subject to the Boost Software License,
  4. // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
  5. #include "./test.hpp"
  6. #if defined(BOOST_CONVERT_IS_NOT_SUPPORTED)
  7. int main(int, char const* []) { return 0; }
  8. #else
  9. #include <boost/convert.hpp>
  10. #include <boost/convert/printf.hpp>
  11. #include <boost/detail/lightweight_test.hpp>
  12. using std::string;
  13. using boost::convert;
  14. namespace arg = boost::cnv::parameter;
  15. int
  16. main(int, char const* [])
  17. {
  18. boost::cnv::printf cnv;
  19. string const not_int_str = "not an int";
  20. string const std_str = "-11";
  21. char const* const c_str = "-12";
  22. BOOST_TEST( -1 == convert<int>(not_int_str, cnv).value_or(-1));
  23. BOOST_TEST(-11 == convert<int>(std_str, cnv).value_or(-1));
  24. BOOST_TEST(-12 == convert<int>(c_str, cnv).value_or(-1));
  25. BOOST_TEST("255" == convert<std::string>(255, cnv(arg::base = boost::cnv::base::dec)).value());
  26. BOOST_TEST( "ff" == convert<std::string>(255, cnv(arg::base = boost::cnv::base::hex)).value());
  27. BOOST_TEST("377" == convert<std::string>(255, cnv(arg::base = boost::cnv::base::oct)).value());
  28. string s01 = convert<string>(12.3456, cnv(arg::precision = 6)).value();
  29. string s02 = convert<string>(12.3456, cnv(arg::precision = 3)).value();
  30. BOOST_TEST(s01 == "12.345600");
  31. BOOST_TEST(s02 == "12.346");
  32. return boost::report_errors();
  33. }
  34. #endif