字符串的最大大小与c ++中的实际容量之间的差异

时间:2016-06-19 15:56:19

标签: c++ string

我想问一个关于C ++中字符串的问题。

我写了一些代码来比较后缀和从字符串计算的前缀,如下所示。

 string s;
 int num = 0;

       for(int i = 1; i <s.size(); i++)
        {
            string prefix = s.substr(0,s.size()-i);
            string suffix = s.substr(i,s.size()-i);
            cout <<"prefix : "<<prefix<<" suffix : "<<suffix<<endl;
            if(prefix==suffix){
                num = prefix.size();
                break;
            }
        }

此代码查找字符串的最大长度,该字符串可以是原始字符串的前缀和后缀。

当我输入非常大的字符串(大约1Mb的长度),然后我的 编译器提醒我,我的字符串会因为它的大小而被剪切。但是,当我通过s.max_size()检查字符串大小时,我发现它返回了非常大的数字(超过1Mb)。

所以,我的问题如下。

  1. 如何处理非常大的字符串(最多1Mb)? (假设必须使用字符串容器。)

  2. 与上面的代码相比,有没有更有效的方法来查找字符串的最大长度?

0 个答案:

没有答案