求助
查看原帖
求助
778022
yhylivedream楼主2023/6/26 15:10

编译能通过,但输入样例后输出

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;
}


2023/6/26 15:10
加载中...