C언어/문제풀다 하나씩

금지어 없애고 대체하기 find insert erase 함수 사용

mcdn 2020. 6. 26. 15:22
반응형
#include <iostream>
#include <string>
using namespace std;
struct node {
	string before;
	string after;
	int size;
};

node words[5] = {
	{"KFC", "#BBQ#", 3},
	{"MC", "#BBQ#", 2},
	{"BICMAC", "#MACBOOK#", 6},
	{"SHACK", "#SHOCK#", 5},
	{"SONY", "#NONY#", 4}
};

int main() {
	string longsent = "ILOVEKFCANDMC!!";
	cin >> longsent;
	//ILOVEKFCANDMC!!
	for (int i = 0; i < 5;i++) {
		int index = 0;
		while (index != -1) {
			index = longsent.find(words[i].before, index);
			if (index == -1) break;
			longsent.erase(index, words[i].size);
			longsent.insert(index, words[i].after);
			index += 1;
		}
	}
	cout << longsent;


}

ㅎ훌륭해! 잘했다

 

 

node 로 만드니까 엄청 편해짐 :ㅇ

 

5번 반복해야하는 명령문들

 

find(KFC~ 로 금지어 찾고

 

erase해서 무한반복하지 않도록 하고 

insert해서 #BBQ#등을 새로 넣는다

 

insert는 덮어씌우는 것이 아니라 말 그대로 추가되서 

 

만약 erase로 안 없애면 

#BBQ#KFC

#BBQ##BBQ#KFC

이런식으로 계속 추가되서 루프에서 벗어나질 않음

 

index = longsent.find(words[i].before, index); 
if (index == -1) break; 
longsent.erase(index, words[i].size); 
longsent.insert(index, words[i].after);

find함수

erase함수

insert함수 기억하자!

 

반응형