쌓고 쌓다

[C++] string erase 정리 본문

프로그래밍/C & C++

[C++] string erase 정리

승민아 2022. 6. 24. 23:07

크게 지우는 방법은 3가지이다.

1. sequence

string& erase (size_t pos = 0, size_t len = npos);

pos에서부터 길이 len 만큼 지울 수 있습니다.

len은 시작 위치를 포함한 길이입니다.

 

예제

string str = "Hello! Test string~";
cout << str<<endl;
str.erase(0, 3);
cout << str;

0위치에서부터 길이3만큼을 지웁니다.


실행 결과

 

2. character

iterator earse (iterator p);

포인터를 이용해 그 위치를 지워버립니다.

 

예제 (1)

string str = "Hello! Test string~";
cout << str<<endl;
str.erase(str.begin());
cout << str;

 

실행 결과 (1)

 

 

예제 (2)

string str = "Hello! Test string~";
cout << str<<endl;
str.erase(str.begin()+5);
cout << str;

begin으로부터 5 이동한 위치를 지움

 

실행 결과 (2)

 

3. range

iterator erase (iterator first, iterator last);

iterator를 이용해 범위를 지정해 지웁니다.

[first, last) 범위를 지웁니다. -> last는 포함하지 않음.

 

예제 (1)

string str = "Hello! Test string~";
cout << str<<endl;
str.erase(str.begin(),str.begin()+5);
cout << str;

 

실행 결과 (1)

 

예제 (2)

string str = "Hello! Test string~";
cout << str<<endl;
str.erase(str.begin(),str.end()-1);
cout << str;

 

실행 결과 (2)

 

 

str.end() 는 문자열의 끝보다 한 칸 뒤를 가리킨다.

즉, 문자열 끝+1을 가리킴.

그래서 str.end()-1이 문자열 끝을 가리킴

string str = "Hello";
str.erase(str.end() - 1);
cout << str;

 

실행 결과

Comments