From 98b9ff47a12298cb0b2874f811904678c1651dc2 Mon Sep 17 00:00:00 2001 From: Matthias Liedtke Date: Fri, 28 May 2021 18:21:01 +0200 Subject: [PATCH] Align hex floats right as default (#2317) --- include/fmt/format.h | 15 ++++++++------- test/format-test.cc | 2 ++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/include/fmt/format.h b/include/fmt/format.h index 60a1b559..e0ce5877 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1308,14 +1308,14 @@ constexpr OutputIt write_padded(OutputIt out, return write_padded(out, specs, size, size, f); } -template +template FMT_CONSTEXPR OutputIt write_bytes(OutputIt out, string_view bytes, const basic_format_specs& specs) { - return write_padded(out, specs, bytes.size(), - [bytes](reserve_iterator it) { - const char* data = bytes.data(); - return copy_str(data, data + bytes.size(), it); - }); + return write_padded( + out, specs, bytes.size(), [bytes](reserve_iterator it) { + const char* data = bytes.data(); + return copy_str(data, data + bytes.size(), it); + }); } template @@ -1801,7 +1801,8 @@ OutputIt write(OutputIt out, T value, basic_format_specs specs, if (fspecs.format == float_format::hex) { if (fspecs.sign) buffer.push_back(data::signs[fspecs.sign]); snprintf_float(promote_float(value), specs.precision, fspecs, buffer); - return write_bytes(out, {buffer.data(), buffer.size()}, specs); + return write_bytes(out, {buffer.data(), buffer.size()}, + specs); } int precision = specs.precision >= 0 || !specs.type ? specs.precision : 6; if (fspecs.format == float_format::exp) { diff --git a/test/format-test.cc b/test/format-test.cc index 38399788..44a2415d 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -1215,6 +1215,8 @@ TEST(format_test, format_double) { EXPECT_EQ("392.650000", fmt::format("{:f}", 392.65)); EXPECT_EQ("392.650000", fmt::format("{:F}", 392.65)); EXPECT_EQ("42", fmt::format("{:L}", 42.0)); + EXPECT_EQ(" 0x1.0cccccccccccdp+2", fmt::format("{:24a}", 4.2)); + EXPECT_EQ("0x1.0cccccccccccdp+2 ", fmt::format("{:<24a}", 4.2)); char buffer[buffer_size]; safe_sprintf(buffer, "%e", 392.65); EXPECT_EQ(buffer, fmt::format("{0:e}", 392.65));