Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_...ng::max_size(3) C++ Standard Libarystd::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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::basic_string::max_size&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help