【发布时间】:2021-11-06 11:54:24
【问题描述】:
我有代码输出std::string 对象的最大长度:
string s;
cout<<s.max_size()<<endl;
cout << INT_MAX << endl;
cout<<LLONG_MAX<<endl;
输出:
4611686018427387897
2147483647
9223372036854775807
如果不难,请解释为什么std::string的最大尺寸是4611686018427387897。这大约是LLONG_MAX的一半。
【问题讨论】:
-
提示:检查
std::string::max_size()的类型 -
"请解释为什么
std::string的最大大小是..." - 因为这就是实现所决定的。如果您想了解原因,请询问编写实现的供应商。 -
这也纯粹是一个理论上的“最大大小”,因为任何接近该大小的字符串都将是数百万连续 TB。
-
根据en.cppreference.com/w/cpp/string/basic_string/max_size - “返回由于系统或库实现限制而字符串能够容纳的最大元素数”,因此确切的值是实现细节。此外,此值对于大多数应用程序也不是很有用。