std::basic_string<CharT,Traits,Allocator>::max_size
Материал из cppreference.com
< cpp | string | basic string
size_type max_size()const; | (до C++11) | |
size_type max_size()constnoexcept; | (начиная с C++11) (до C++20) | |
constexpr size_type max_size()constnoexcept; | (начиная с C++20) | |
Возвращает максимальное количество элементов, которые может содержать строка из-за ограничений реализации системы или библиотеки, т.е. std::distance(begin(), end()) для самой большой строки.
Содержание |
[править]Параметры
(нет)
[править]Возвращаемое значение
Максимальное количество символов.
[править]Сложность
Константная.
[править]Пример
Запустить этот код
#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<<"Размер указателя: "<<CHAR_BIT* sizeof(void*)<<" бит\n""Максимальные размеры:\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>();}
Возможный вывод:
Размер указателя: 64 бит Максимальные размеры: 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
[править]Смотрите также
возвращает количество символов (public функция-элемент) | |
(C++17) | возвращает максимальное число символов (public функция-элемент std::basic_string_view<CharT,Traits> ) |