반응형
1. 개요
구현 문제단원을 풀어보는 과적엥서 문자를 찾아 지우는 erase()함수는 있어도, 인덱스를 기준으로 삭제해주는 함수가 없기에 만들어보면 유용할 것 같다는 생각이 들었다. 인덱스를 기준으로 문자 하나를 입력했을 때 해당 자리의 문자를 제거해주는 함수를 만들어 보았다.
2. 이론
구현 이론은 간단하다. 해당 인덱스까지의 문자열을 자르고 그 뒤의 인덱스를 다시 잘라 기존 전자의 인덱스와 더해주면 된다.
3. 코드
- 인덱스 기준의 문자 제거 코드
string erase_char(string str, int index) {
string buff;
buff = str.substr(0, index);
buff += str.substr(index + 1, str.size() - (index + 1));
return buff;
}
해당 코드를 보면 첫 buff변수에 substr() 메소드를 사용하여 문자열을 잘라 저장한다. 중요한점은 index를 시작기준에서부터의 거리인 두번째 인수로 사용했다는 점이다.
두번째로 buff에 더해주는 substr() 에서는 제거할 인덱스의 바로 다음지점부터 전체 숫자에서 첫 buff에 더해진 문자열의 수를 빼주어 남아있는 문자열을 계산해 두번째 인덱스에 넣어준다. 다음은 test코드이다.
- 함수 Test
#include <iostream>
#include <string>
using namespace std;
string erase_char(string str, int index) {
string buff;
buff = str.substr(0, index);
buff += str.substr(index + 1, str.size() - (index + 1));
return buff;
}
int main(void) {
string test = "abcdefg";
for (int i = 0; i < test.size(); i++) {
cout << erase_char(test, i) << endl;
}
return 0;
}
다음은 실행 결과이다.
반응형
'programming > 문제 해결' 카테고리의 다른 글
[Javascript] 객체에 정의되지 않은 요소의 참조를 예방하는 방법 (1) | 2024.09.07 |
---|---|
[Python, Unix, Ubuntu] Python 프로젝트를 유닉스에 배포 시 생기는 오류 - (ImportError: No module named '') (0) | 2022.04.09 |
[C++, 코딩 테스트] 문자열을 입력 받고 문자로 추출, 공백으로 구분하기 - (getline() 함수 사용시 주의할 점) (0) | 2021.07.18 |
[C++] 문자열에서 정수, 실수, 문자 추출하기 - (stringstream) (0) | 2021.05.14 |
[C언어, C++] 재귀함수 내에서 재귀호출을 두번 할때 주의점 (0) | 2020.07.24 |