home | help
std::basic_...ng::max_size(3)  C++ Standard Libary std::basic_...ng::max_size(3)

NAME
     std::basic_string::max_size - std::basic_string::max_size

Synopsis
	size_type max_size() const;  (noexcept since C++11)
				     (constexpr since C++20)

	Returns the maximum number of elements the string is able to hold due to
     system or
	library  implementation  limitations, i.e. std::distance(begin(), end())
     for the
	largest string.

Parameters
	(none)

Return value
	Maximum number of characters.

Complexity
	Constant.

Example
     // Run this code

      #include <array>
      #include <climits>
      #include <iomanip>
      #include <iostream>
      #include <locale>
      #include <string>
      #include <typeinfo>

      #include <boost/core/demangle.hpp>

      template<typename T>
      void print_basic_string_max_size()
      {
	  std::basic_string<T> s;
	  auto max_size = s.max_size();
	  std::cout.imbue(std::locale("en_US.UTF-8"));
	  std::cout	<<	"basic_string<"      <<      boost::core::deman-
     gle(typeid(T).name())
		    << ">:\n\t" << max_size << " = ";
	  std::cout << std::setprecision(3) << (double) max_size << " = ";
	  std::cout.imbue(std::locale("C"));
	  std::cout << std::hex << std::setfill('0') << "0x"
		    << std::setw(sizeof(typename decltype(s)::size_type) << 1)
		    << max_size << '\n' << std::dec;
      };

      int main()
      {
	  std::cout << "Pointer size: " << CHAR_BIT * sizeof(void*) << " bits\n"
		       "Maximum sizes:\n";

	  print_basic_string_max_size<char>();
	  print_basic_string_max_size<char16_t>();
	  print_basic_string_max_size<char32_t>();
	  print_basic_string_max_size<wchar_t>();
	  print_basic_string_max_size<long>();

	  using CharT = std::array<char, 01232>;
	  print_basic_string_max_size<CharT>();
      }

Possible output:
      Pointer size: 64 bits
      Maximum sizes:
      basic_string<char>:
	      9,223,372,036,854,775,807 = 9.22e+18 = 0x7fffffffffffffff
      basic_string<char16_t>:
	      4,611,686,018,427,387,903 = 4.61e+18 = 0x3fffffffffffffff
      basic_string<char32_t>:
	      2,305,843,009,213,693,951 = 2.31e+18 = 0x1fffffffffffffff
      basic_string<wchar_t>:
	      2,305,843,009,213,693,951 = 2.31e+18 = 0x1fffffffffffffff
      basic_string<long>:
	      1,152,921,504,606,846,975 = 1.15e+18 = 0x0fffffffffffffff
      basic_string<std::array<char, 666ul>>:
	      13,848,906,962,244,407 = 1.38e+16 = 0x00313381ec031337

See also
	size	 returns the number of characters
	length	 (public member function)
	max_size returns the maximum number of characters
		 (public	member	      function	      of	std::ba-
     sic_string_view<CharT,Traits>)

http://cppreference.com 	   2024.06.10	   std::basic_...ng::max_size(3)

home | help