C++에서 문자열 지우기
이 기사에서는 std::string::erase
함수를 사용하여 C++의 문자열에서 문자를 제거하는 방법을 보여줍니다.
std::string::erase
함수를 사용하여 문자열에서 지정된 문자 제거
erase
는 문자열에서 주어진 문자를 제거하는 데 사용할 수 있는 std::string
멤버 함수입니다. 여기에는 세 가지 오버로드가 있으며 다음 예제에서 각각에 대해 설명합니다.
첫 번째 오버로드는 index
와 count
를 나타내는 size_type
유형의 두 인수를 허용합니다. 이 버전은 index
위치에서 시작하는 count
수의 문자를 지우려고 시도하지만 일부 시나리오에서는 주어진 인덱스 뒤에 더 적은 수의 문자가 남아 있을 수 있으므로 이 함수는 min(count, size () - 색인)
문자. erase
의 첫 번째 오버로드는 *this
값을 반환합니다.
이 두 매개변수에는 모두 기본값이 있으며 함수에 단일 인수 값을 전달하면 결과가 다소 직관적이지 않을 수 있습니다. 사실, 주어진 값은 index
매개변수로 해석되고 count
는 std::npos
로 가정됩니다. 결과적으로 주어진 위치 뒤의 나머지 문자열이 지워집니다.
다음 코드 조각은 인덱스 값을 명시적으로 전달하여 하나는 find
멤버 함수를 사용하고 다른 하나는 유사한 시나리오를 보여줍니다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
text.erase(0, 6);
cout << text << endl;
text.erase(text.find('c'));
cout << text << endl;
text.erase(2);
cout << text << endl;
return EXIT_SUCCESS;
}
출력:
ipsum dolor sit amet, consectetur adipiscing elit.
ipsum dolor sit amet,
ip
함수의 두 번째 오버로드는 삭제할 문자의 위치를 나타내는 단일 매개변수를 허용합니다. 이 인수는 해당 반복기 유형이어야 합니다. 그렇지 않으면 첫 번째 오버로드를 호출합니다. 이 버전의 함수를 std::find
알고리즘과 함께 사용하여 문자열에서 주어진 문자가 처음 나타나는 것을 제거할 수 있습니다. 그렇지 않으면 begin
또는 end
반복자를 사용하여 문자의 상대 위치를 전달할 수 있습니다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
text.erase(std::find(text.begin(), text.end(), ','));
cout << text << endl;
text.erase(text.end() - 5);
cout << text << endl;
return EXIT_SUCCESS;
}
출력:
Lorem ipsum dolor sit amet consectetur adipiscing elit.
Lorem ipsum dolor sit amet consectetur adipiscing lit.
마지막으로 두 개의 반복자를 매개변수로 사용하고 해당 범위의 모든 문자를 제거하는 세 번째 오버로드가 있습니다. 다음 코드 샘플은 초기 문자를 제외한 문자열의 모든 문자를 제거하는 방법을 보여줍니다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
text.erase(text.begin() + 1, text.end());
cout << text << endl;
return EXIT_SUCCESS;
}
출력:
L
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook