Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::formatted_size

      From cppreference.com
      <cpp‎ |utility‎ |format
       
       
       
      Formatting library
      Standard format specification
      Formatting functions
      (C++20)
      (C++20)
      formatted_size
      (C++20)
      (C++20)
      (C++20)
      Format strings
      Formatting concepts
      Formatter
      (C++20)
      Formatting arguments
      (C++20)(deprecated in C++26)
      Format error
       
      Defined in header<format>
      template<class...Args>
      std::size_t formatted_size(std::format_string<Args...> fmt, Args&&...args);
      (1)(since C++20)
      template<class...Args>
      std::size_t formatted_size(std::wformat_string<Args...> fmt, Args&&...args);
      (2)(since C++20)
      template<class...Args>

      std::size_t formatted_size(conststd::locale& loc,

                                 std::format_string<Args...> fmt, Args&&...args);
      (3)(since C++20)
      template<class...Args>

      std::size_t formatted_size(conststd::locale& loc,

                                 std::wformat_string<Args...> fmt, Args&&...args);
      (4)(since C++20)

      Determine the total number of characters in the formatted string by formattingargs according to the format stringfmt. If present,loc is used for locale-specific formatting.

      The behavior is undefined ifstd::formatter<std::remove_cvref_t<Ti>, CharT> does not meet theBasicFormatter requirements for anyTi inArgs.

      Contents

      [edit]Parameters

      fmt - an object that represents the format string. The format string consists of
      • ordinary characters (except{ and}), which are copied unchanged to the output,
      • escape sequences{{ and}}, which are replaced with{ and} respectively in the output, and
      • replacement fields.

      Each replacement field has the following format:

      {arg-id(optional)} (1)
      {arg-id(optional):format-spec} (2)
      1) replacement field without a format specification
      2) replacement field with a format specification
      arg-id - specifies the index of the argument inargs whose value is to be used for formatting; if it is omitted, the arguments are used in order.

      Thearg-id s in a format string must all be present or all be omitted. Mixing manual and automatic indexing is an error.

      format-spec - the format specification defined by thestd::formatter specialization for the corresponding argument. Cannot start with}.

      (since C++23)
      (since C++26)
      • For other formattable types, the format specification is determined by user-definedformatter specializations.
      args... - arguments to be formatted
      loc -std::locale used for locale-specific formatting

      [edit]Return value

      The total number of characters in the formatted string.

      [edit]Exceptions

      Propagates any exception thrown by formatter.

      [edit]Example

      Run this code
      #include <format>#include <iomanip>#include <iostream>#include <string_view>#include <vector> int main(){usingnamespace std::literals::string_view_literals; constexprauto fmt_str{"Hubble's H{0} {1} {2:*^4} miles/sec/mpc."sv};constexprauto sub_zero{"\N{SUBSCRIPT ZERO}"sv};// "₀" or {0342, 130, 128}constexprauto aprox_equ{"\N{APPROXIMATELY EQUAL TO}"sv};// "≅" or {0342, 137, 133}constexprint Ho{42};// H₀ constauto min_buffer_size{std::formatted_size(fmt_str, sub_zero, aprox_equ, Ho)};std::cout<<"Min buffer size = "<< min_buffer_size<<'\n'; // Use std::vector as dynamic buffer. The buffer does not include the trailing '\0'.std::vector<char> buffer(min_buffer_size); std::format_to_n(buffer.data(), buffer.size(), fmt_str, sub_zero, aprox_equ, Ho);std::cout<<"Buffer: "<<std::quoted(std::string_view{buffer.data(), min_buffer_size})<<'\n'; // Print the buffer directly after adding the trailing '\0'.    buffer.push_back('\0');std::cout<<"Buffer: "<<std::quoted(buffer.data())<<'\n';}

      Output:

      Min buffer size = 37Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      P2216R3C++20throwsstd::format_error for invalid format stringinvalid format string results in compile-time error
      P2418R2C++20objects that are neither const-usable nor copyable
      (such as generator-like objects) are not formattable
      allow formatting these objects
      P2508R1C++20there's no user-visible name for this facilitythe namebasic_format_string is exposed

      [edit]See also

      (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]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/format/formatted_size&oldid=173441"

      [8]ページ先頭

      ©2009-2025 Movatter.jp