std::string s 。 s.max_size() == s.get_allocator().max_size(); 我觉得这很有意思,默认情况下 std::string 会使用 std::allocator<char> ,其理论上限为 size_type(-1) (是的,我知道我假设2的补码,但这与实际问题无关)。我知道实际的限制将远远小于此。在典型的32位x86系统上,内核将占用2GB(可...
size_type max_size()constnoexcept; (C++11 起) (C++20 前) constexprsize_type max_size()constnoexcept; (C++20 起) 返回string 由于保有系统或库实现限制所能保有的最大元素数,即最大 string 的 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(); ...
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::...
max_size() << " <- basic_string_view<char>::max_size()\n" << std::basic_string_view<char16_t>{}.max_size() << " <- basic_string_view<char16_t>::max_size()\n" << std::wstring_view{}.max_size() << " <- wstring_view::max_size()\n" << std::basic_string_view<...
size_type max_size() const noexcept; (C++11 起)(C++20 前) constexpr size_type max_size() const noexcept; (C++20 起) 返回string 由于保有系统或库实现限制所能保有的最大元素数,即最大 string 的 std::distance(begin(), end()) 。 参数 (无) 返回值 最大字符数 复杂度 常数。 示例运行此...