C++ 字符串中的长度错误是什么?如何删除它
我编写了以下代码,当我执行它时,我得到了这个错误: 在抛出“std::length_error”实例后调用terminate what():基本字符串::\u S\u创建 0已中止(内核转储)C++ 字符串中的长度错误是什么?如何删除它,c++,algorithm,coding-style,C++,Algorithm,Coding Style,我编写了以下代码,当我执行它时,我得到了这个错误: 在抛出“std::length_error”实例后调用terminate what():基本字符串::\u S\u创建 0已中止(内核转储) #包括 #包括 #包括 #包括 #包括 使用名称空间std; bool comp(字符c1、字符c2) { 返回c1可以使用字符串::保留函数:不要使用C++标记来回答C++问题。它们是不同的语言!我想知道错误发生在哪一行上,还有为什么当k>0和SUM40= = SUM41时,你总是把字符从字符串中擦除无
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
bool comp(字符c1、字符c2)
{
返回c1 cout表示您试图创建的字符串大于std::string::max_size()。请参阅下面链接中的备注部分
< p>可以使用字符串::保留函数:不要使用C++标记来回答C++问题。它们是不同的语言!我想知道错误发生在哪一行上,还有为什么当k>0和SUM40= = SUM41时,你总是把字符从字符串中擦除无数次。只有(
和)
个字符,否则变量名就没有意义。你有调试器吗?@Mr ListerAfter我输入:5()在此之后出现错误,很抱歉这是一个编码错误error@rghome我在gcc/g++上工作,需要更多解释如何控制字符串I的大小create@user3774755 “如何控制我创建的字符串的大小”:通过不创建过长的字符串?
#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;
}