C++에서 문자열 지우기

Jinku Hu 2023년10월12일
C++에서 문자열 지우기

이 기사에서는 std::string::erase 함수를 사용하여 C++의 문자열에서 문자를 제거하는 방법을 보여줍니다.

std::string::erase 함수를 사용하여 문자열에서 지정된 문자 제거

erase는 문자열에서 주어진 문자를 제거하는 데 사용할 수 있는 std::string 멤버 함수입니다. 여기에는 세 가지 오버로드가 있으며 다음 예제에서 각각에 대해 설명합니다.

첫 번째 오버로드는 indexcount를 나타내는 size_type 유형의 두 인수를 허용합니다. 이 버전은 index 위치에서 시작하는 count 수의 문자를 지우려고 시도하지만 일부 시나리오에서는 주어진 인덱스 뒤에 더 적은 수의 문자가 남아 있을 수 있으므로 이 함수는 min(count, size () - 색인) 문자. erase의 첫 번째 오버로드는 *this 값을 반환합니다.

이 두 매개변수에는 모두 기본값이 있으며 함수에 단일 인수 값을 전달하면 결과가 다소 직관적이지 않을 수 있습니다. 사실, 주어진 값은 index 매개변수로 해석되고 countstd::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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - C++ String