字符串中的length_error到底是什么,以及如何删除它

What is exactly length_error in string and how to remove it

本文关键字:何删除 删除 length error 是什么 字符串      更新时间:2023-10-16

我做了以下代码,当我执行它时,我得到了这个错误:

在抛出"std::length_error"的实例后调用terminate

what():basic_string::_S_create

0中止(堆芯转储)

    #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错误,以及如何删除它。

我知道这是常见的问题。我看到了很多关于这方面的文章,但这些文章并没有解决我的问题。

如有任何帮助,将不胜感激

问候

这意味着您试图创建的字符串大于std::string::max_size()。请参阅下面链接中的备注部分。

https://msdn.microsoft.com/en-us/library/as4axahk(VS.80).aspx

您可以使用字符串::reserve函数更改字符串容量:http://www.cplusplus.com/reference/string/string/reserve/