我想问一个关于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)。
所以,我的问题如下。
如何处理非常大的字符串(最多1Mb)? (假设必须使用字符串容器。)
与上面的代码相比,有没有更有效的方法来查找字符串的最大长度?