3.0.0
-
The project has been renamed from C++ Format (cppformat) to fmt for consistency with the used namespace and macro prefix (#307). Library headers are now located in the
fmt
directory:#include "fmt/format.h"
Including
format.h
from thecppformat
directory is deprecated but works via a proxy header which will be removed in the next major version.The documentation is now available at http://fmtlib.net. -
Added support for strftime-like date and time formatting (#283):
#include "fmt/time.h" std::time_t t = std::time(nullptr); // Prints "The date is 2016-04-29." (with the current date) fmt::print("The date is {:%Y-%m-%d}.", *std::localtime(&t));
-
std::ostream
support including formatting of user-defined types that provide overloadedoperator<<
has been moved tofmt/ostream.h
:#include "fmt/ostream.h" class Date { int year_, month_, day_; public: Date(int year, int month, int day) : year_(year), month_(month), day_(day) {} friend std::ostream &operator<<(std::ostream &os, const Date &d) { return os << d.year_ << '-' << d.month_ << '-' << d.day_; } }; std::string s = fmt::format("The date is {}", Date(2012, 12, 9)); // s == "The date is 2012-12-9"
-
Added support for custom argument formatters (#235).
-
Added support for locale-specific integer formatting with the
n
specifier (#305):std::setlocale(LC_ALL, "en_US.utf8"); fmt::print("cppformat: {:n}\n", 1234567); // prints 1,234,567
-
Sign is now preserved when formatting an integer with an incorrect
printf
format specifier (#265):fmt::printf("%lld", -42); // prints -42
Note that it would be an undefined behavior in
std::printf
. -
Length modifiers such as
ll
are now optional in printf formatting functions and the correct type is determined automatically (#255):fmt::printf("%d", std::numeric_limits<long long>::max());
Note that it would be an undefined behavior in
std::printf
. -
Added initial support for custom formatters (#231).
-
Fixed detection of user-defined literal support on Intel C++ compiler (#311, #312). Thanks to @dean0x7d (Dean Moldovan) and @speth (Ray Speth).
-
Reduced compile time (#243, #249, #317):
Thanks to @dean0x7d (Dean Moldovan).
-
Compile test fixes (#313). Thanks to @dean0x7d (Dean Moldovan).
-
Documentation fixes (#239, #248, #252, #258, #260, #301, #309). Thanks to @ReadmeCritic @Gachapen (Magnus Bjerke Vik) and @jwilk (Jakub Wilk).
-
Fixed compiler and sanitizer warnings (#244, #256, #259, #263, #274, #277, #286, #291, #296, #308) Thanks to @mwinterb, @pweiskircher (Patrik Weiskircher), @Naios.
-
Improved compatibility with Windows Store apps (#280, #285) Thanks to @mwinterb.
-
Added tests of compatibility with older C++ standards (#273). Thanks to @niosHD.
-
Changed
ArgMap
to be backed by a vector instead of a map. (#261, #262). Thanks to @mwinterb. -
Added
fprintf
overload that writes to astd::ostream
(#251). Thanks to nickhutchinson (Nicholas Hutchinson). -
Export symbols when building a Windows DLL (#245). Thanks to macdems (Maciek Dems).
-
Fixed compilation on Cygwin (#304).
-
Implemented a workaround for a bug in Apple LLVM version 4.2 of clang (#276).
-
Implemented a workaround for Google Test bug #705 on gcc 6 (#268). Thanks to octoploid.
-
Removed Biicode support because the latter has been discontinued.