반응형


 

String remove, erase 사용하여 공백 제거 하는 방법

 

remove 함수

 

  • std::remove 함수는 algorithm 헤더파일에 포함되어 있다.
  • 함수 원형 : std::remove(begin, end, value for delete)
  • 가장 큰 특징은, 일반적인 remove 종류의 함수들과 달리, std::remove는 원소 값 삭제를 하는 것은 맞으나, 실제로 컨테이너 사이즈가 줄어들지가 않는 이슈가 있다.
  • 예를 들어 아래와 같은 현상이 발생한다.
string str = "bE au T I fu L"
remove(str.begin(), str.end(), ' ');
cout << str;

// 결과 값 : bEauTIfuL fu L

 

삭제가 되긴 하였으나, 삭제된 공간만큼 앞으로 당겨지고, string의 길이가 짧아져야 하는데,

앞쪽에는 공백이 제거된 문자열이 잘 정렬되어있지만, 뒤쪽에 기존 string 값인 fu L의 잔재가 남아있다.

 

 

erase 함수

 

string str = "bE au T I fu L"
str.erase(remove(str.begin(), str.end(), ' '), str.end());
cout << str;

// 결과 : bEauTIfuL

 

따라서 위와 같은 방법으로 erase와 함께 결합하여 정상적인 실행 결과를 확인할 수 있다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,