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

时间:2015-04-24 10:25:14

标签: c++ arrays string

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

我得到的输出是:

maximum length of string : 1073741820

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

以下是我的问题:

  1. 决定字符串数组的bigt索引时会考虑哪些因素?

  2. 如何减少字符串变量的max_size()?

1 个答案:

答案 0 :(得分:6)

你得出了错误的结论。 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 s,因为堆栈空间通常非常有限。由编译器决定程序中可用的堆栈空间量。通常,对于这么大的数组,您可以使用动态或静态分配。

这样做的好方法是使用标准容器,例如: std::vector<std::string>