【发布时间】:2020-06-18 08:02:30
【问题描述】:
我正在编写一个将编辑字符串的代码。但是,我的代码对输入“zzzzzzzzzz”给出了分段错误。我无法弄清楚分段错误背后的原因。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;cin>>t;
while(t--)
{
string s;cin>>s;
int l=s.size();
int i=1;
cout<<l;
//s.erase(s.begin()+5);
while(i<(l-1))
{
cout<<i<<" ";
s.erase(s.begin()+i);
i=i+2;
}
cout<<s<<endl;
}
//code
return 0;
【问题讨论】:
-
很明显,当
i大于等于s的大小时,您正在调用s.erase(s.begin()+i);。建议您使用调试器准确了解发生这种情况的原因。 -
但是我不能超过'l-1',而且字符串的长度是'l'。所以,我们肯定不会让'i'大于's'的大小跨度>
-
否,因为
l是原始字符串的大小而不是当前字符串的大小。
标签: c++