字符串中的length_error到底是什么,以及如何删除它
What is exactly length_error in string and how to remove it
我做了以下代码,当我执行它时,我得到了这个错误:
在抛出"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/
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 擦除删除成语的性能增益从何而来
- 重载运算符 new/new[] 删除/删除[] 全局C++
- 使用删除 [] 删除由 new [] 创建的数组
- BST 删除/删除节点 - 根
- C++ 使用删除 [] 删除指针
- 删除/删除矢量项的最有效/最快方法
- 删除删除/删除[]
- 使用 std::删除删除错误的字符