编译能通过,但输入样例后输出
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::insert: __pos (which is 4) > this->size() (which is 1)
代码:
#include<bits/stdc++.h>
using namespace std;
string s, s2;
int p1, p2, p3;
void tianchong(char c1, char c2, int pos){
for(char i=c1+1; i<c2; i++){
for(int j=1; j<=p2; j++){
if(p1 == 1){
char t; t |= 32;
string s; s += t;
s2.insert(pos, s);
// pos ++;
}else if(p1 == 2){
char t; t &= -33;
string s; s += t;
s2.insert(pos, s);
// pos ++;
}else{
string t = "*";
s2.insert(pos, s);
// pos ++;
}
}
}
}
int main(){
cin >> p1 >> p2 >> p3;
cin >> s;
s2 = s;
for(int i=0; i<s.size()-1; i++){
if(s[i] == '-'){
char c1, c2;
c1 = s2[i - 1], c2 = s2[i + 1];
if(c1 >= c2) continue;
if(c1 + 1 == c2){
s2.erase(i, 1);
continue;
}
s2.erase(i, 1);
tianchong(c1, c2, i);
}
}
if(p3 == 2)
reverse(s.begin(), s.end());
cout << s;
return 0;
}