std::basic_string<CharT,Traits,Allocator>::max_size
From cppreference.com
< cpp | string | basic string
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
std::basic_string
(C++23)
(DR*)
(DR*)
(C++23)
(DR*)
(C++23)
(C++23)
basic_string::max_size
(C++20)
(C++20)
(C++23)
(C++20)(C++20)
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20)
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++14)
(C++11)
Deduction guides (C++17)
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.
[edit] Parameters
(none)
[edit] Return value
Maximum number of characters.
[edit] Complexity
Constant.
[edit] 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::demangle(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
[edit] See also
returns the number of characters
(public member function of
(public member function of
std::basic_string_view<CharT,Traits>
) [edit]