【问题标题】:Why is the max size of a std :: string object is 4611686018427387897?为什么 std :: string 对象的最大大小是 4611686018427387897?
【发布时间】: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 - “返回由于系统或库实现限制而字符串能够容纳的最大元素数”,因此确切的值是实现细节。此外,此值对于大多数应用程序也不是很有用。

标签: c++ string stl stdstring


【解决方案1】:

这取决于您在使用的标准库中如何实现basic_string。不同的实现可能会从字符串的大小中“使用”一点用于其他目的(例如,表示“这是一个短字符串”的标志)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2019-09-10
    • 2011-01-07
    • 2013-03-26
    相关资源
    最近更新 更多