반응형
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와 함께 결합하여 정상적인 실행 결과를 확인할 수 있다.
반응형
'Development > C & C++' 카테고리의 다른 글
[C++ / STL] String 대문자, 소문자화 하는법 (0) | 2021.07.17 |
---|---|
[C++ / STL] String 공백 포함 입력 받는 방법 (0) | 2021.07.17 |
[C++/MFC] LNK2019 _ main 외부 기호를 확인하지 못했습니다. 해결법 (0) | 2020.09.15 |
[C/C++] int 형 문자열로 변환하는법 총정리 (0) | 2020.01.23 |
[C/C++] char 형 int로 변환하기 (0) | 2020.01.20 |