c++ - 限制 std::string 变量的最大长度

标签 c++ arrays string

std::string src;
cout<<"maximum length of string : "<<src.max_size();

我得到的输出是:

maximum length of string : 1073741820

我需要创建一个大的字符串数组,例如字符串输入 [100000],但是当我使用超过 80,000 的数组索引时出现运行时错误。我的字符串变量的长度较少,平均长度为 15 个字符。所以我需要限制字符串变量的长度。

以下是我的问题:

  1. 决定字符串数组的最大索引考虑了哪些因素?

  2. 如何减少字符串变量的 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/

相关文章:

javascript - 如何使用 Javascript 中给定的回调来展平数组?

c - 使用 "new"命令在 C 中动态数组

c++ - leetcode 65. 有效数字如何理解状态转移表

c++ - 对 QSqlTableModel 中的 UI 值进行单位转换

c++ - 打印二进制递归算法

c - 如何从文件中获取 int 和 string 并将其保存在结构中?

c++ - 我可以得到一个 istream 来放置而不是分配吗?

string - 为什么在 Rust 中将字符串的第一个字母大写如此复杂?

C char**** 数组动态分配表现尴尬

java - 使用 .equals() 检查字符串中的字符不起作用