我制作了以下代码,当我执行它时,我收到此错误:
在抛出'std :: length_error'
的实例后终止调用what():basic_string :: _ S_create
0Aborted(core dumped)
#include<stdio.h>
#include<string>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
bool comp(char c1, char c2)
{
return c1 < c2;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
string str;
getline(cin,str);
sort(str.begin(), str.end(), comp);
int k;
long long int sum40=0,sum41=0;
scanf("%d",&k);
cout<<str.length();
for(unsigned int i=0;i<str.length();++i)
{
if(str[i]=='(')
sum40++;
else
sum41++;
}
if(sum40!=sum41 && k==1)
cout<<str;
else
if(sum40!=sum41 && k!=1)
printf("-1");
else
{
while(k>0 || (sum40==sum41))
{
str.erase(str.begin());
k--;
}
cout<<str;
}
}
return 0;
}
我想知道什么是std :: length_error错误以及如何删除它。
我知道这是常见的问题。我看到了很多文章,但这些文章没有解决我的问题。
任何帮助将不胜感激
此致
答案 0 :(得分:0)
这意味着您尝试创建的字符串大于std :: string :: max_size()。请参阅以下链接中的备注部分。
https://msdn.microsoft.com/en-us/library/as4axahk(VS.80).aspx
答案 1 :(得分:0)
您可以使用string :: reserve函数更改字符串容量:http://www.cplusplus.com/reference/string/string/reserve/