std::basic_string<CharT,Traits,Allocator>:: max_size
From cppreference.net
<
cpp
|
string
|
basic string
C++
Strings library
| Classes | ||||
|
(C++17)
|
||||
std::basic_string
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
size_type max_size
(
)
const
;
|
(C++11부터 noexcept)
(C++20부터 constexpr) |
|
시스템 또는 라이브러리 구현 제한으로 인해 문자열이 보유할 수 있는 최대 요소 수를 반환합니다. 즉, 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 << "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>(); }
가능한 출력:
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
참고 항목
|
문자 수를 반환합니다
(public member function) |
|
|
문자 수를 반환합니다
(
std::basic_string_view<CharT,Traits>
의
public member function)
|