C++ 字符串中的长度错误是什么?如何删除它

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::length_error”实例后调用terminate

what():基本字符串::\u S\u创建

0已中止(内核转储)

#包括
#包括
#包括
#包括
#包括
使用名称空间std;
bool comp(字符c1、字符c2)
{
返回c1cout表示您试图创建的字符串大于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;
    }