Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Formatting library(since C++20)

      From cppreference.com
      <cpp‎ |utility
       
       
       
      Formatting library
      Standard format specification
      Formatting functions
      (C++20)
      (C++20)
      (C++20)
      (C++20)
      Format strings
      Formatting concepts
      Formatter
      (C++20)
      Formatting arguments
      (C++20)(deprecated in C++26)
      Format error
       

      The text formatting library offers a safe and extensible alternative to the printf family of functions. It is intended to complement the existing C++ I/O streams library.

      Contents

      [edit]Format specifications

      Format specification specifies how objects are formatted with different kinds of options.

      The formatting of objects of basic types and standard string types uses thebasic format specification. Other library components may also provide their own format specifications, seehere for details.

      [edit]Formatting functions

      Defined in header<format>
      (C++20)
      stores formatted representation of the arguments in a new string
      (function template)[edit]
      (C++20)
      writes out formatted representation of its arguments through an output iterator
      (function template)[edit]
      writes out formatted representation of its arguments through an output iterator, not exceeding specified size
      (function template)[edit]
      determines the number of characters necessary to store the formatted representation of its arguments
      (function template)[edit]

      [edit]Format strings

      Defined in header<format>
      class template that performs compile-time format string checks at construction time
      (class template)[edit]
      creates runtime format strings directly usable in user-oriented formatting functions
      (function)[edit]

      [edit]Formatting concepts

      Defined in header<format>
      specifies that a type is formattable, that is, it specializesstd::formatter and provides member functionsparse andformat
      (concept)[edit]

      [edit]Extensibility support and implementation detail

      Defined in header<format>
      (C++20)
      non-template variant ofstd::format using type-erased argument representation
      (function)[edit]
      (C++20)
      non-template variant ofstd::format_to using type-erased argument representation
      (function template)[edit]
      creates a type-erased object referencing all formatting arguments, convertible toformat_args
      (function template)[edit]
      (C++20)(deprecated in C++26)
      argument visitation interface for user-defined formatters
      (function template)[edit]
      (C++20)
      defines formatting rules for a given type
      (class template)[edit]
      class template that helps implementingstd::formatter specializations for range types
      (class template)[edit]
      indicates the argument type can be efficiently printed
      (variable template)[edit]
      specifies how a range should be formatted
      (enum)[edit]
      selects a suitedstd::range_format for a range
      (variable template)[edit]
      class template that provides access to a formatting argument for user-defined formatters
      (class template)[edit]
      class that provides access to all formatting arguments
      (class template)[edit]
      formatting state, including all formatting arguments and the output iterator
      (class template)[edit]
      formatting string parser state
      (class template)[edit]
      exception type thrown on formatting errors
      (class)[edit]

      [edit]Helper items(since C++23)

      template<class R,class CharT>

      concept/*const-formattable-range*/=
         ranges::input_range<const R>&&

         std::formattable<ranges::range_reference_t<const R>, CharT>;
      (1)(exposition only*)
      template<class R,class CharT>

      using/*fmt-maybe-const*/=

         std::conditional_t</*const-formattable-range*/<R, CharT>,const R, R>;
      (2)(exposition only*)

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_format201907L(C++20)Text formatting
      202106L(C++23)
      (DR20)
      Compile-time format string checks;
      Reducing parameterization ofstd::vformat_to
      202110L(C++23)
      (DR20)
      Fixing locale handling in chrono formatters;
      Supporting non-const-formattable types
      202207L(C++23)
      (DR20)
      Exposingstd::basic_format_string;
      Clarify handling of encodings in localized formatting of chrono types
      202304L(C++26)Formatting pointers
      202305L(C++26)Type-checking format args
      202306L(C++26)Memberstd::basic_format_arg::visit
      202311L(C++26)Runtime format string
      202403L(C++26)Printing Blank Lines withstd::println
      202403L(C++26)
      (DR23)
      Permit an efficient implementation ofstd::print
      This section is incomplete
      Reason: the value should be >= 202406L, i.e. be different from the previous one
      __cpp_lib_format_ranges202207L(C++23)Formatting ranges
      __cpp_lib_format_path202403L(C++26)Formatting ofstd::filesystem::path
      __cpp_lib_format_uchar202311L(C++26)Fix formatting of code units as integers
      __cpp_lib_formatters202302L(C++23)Formattingstd::thread::id andstd::stacktrace

      We intentionally treat the addition ofstd::basic_format_string (P2508) as a defect report because all known implementations make these components available in C++20 mode, although it is not so categorized officially.

      [edit]Example

      Run this code
      #include <cassert>#include <format> int main(){std::string message=std::format("The answer is {}.",42);assert(message=="The answer is 42.");}

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      P2418R2C++20objects that are neither const-formattable nor copyable
      (such as generator-like objects) are not formattable
      allow formatting these objects
      (relaxed formatter requirements)
      P2508R1C++20there's no user-visible name for this facilitythe namebasic_format_string is exposed

      [edit]See also

      (C++23)
      prints tostdout or a file stream usingformatted representation of the arguments
      (function template)[edit]
      (C++23)
      same asstd::print except that each print is terminated by additional new line
      (function template)[edit]
      outputsformatted representation of the arguments
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/format&oldid=179594"

      [8]ページ先頭

      ©2009-2025 Movatter.jp