std::string src;
cout<<"maximum length of string : "<<src.max_size();
我得到的输出是:
maximum length of string : 1073741820
我需要创建一个大的字符串数组,例如字符串输入 [100000],但是当我使用超过 80,000 的数组索引时出现运行时错误。我的字符串变量的长度较少,平均长度为 15 个字符。所以我需要限制字符串变量的长度。
以下是我的问题:
决定字符串数组的最大索引考虑了哪些因素?
如何减少字符串变量的 max_size()?
最佳答案
您得出了错误的结论。 std::string::max_size()
不代表当前内存使用情况,也不会导致您的运行时错误。 It is an implementation quantity that tells you the maximum possible size of a string on your system : 你不能改变它,你也不需要。
您的筹码量达到了 80,000 std::string
因为堆栈空间通常非常有限。由您的编译器决定您的程序中有多少堆栈空间可用。通常,对于这么大的数组,您会改用动态或静态分配。
做到这一点的一个好方法是使用标准容器,例如std::vector<std::string>
.
关于c++ - 限制 std::string 变量的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845033/