String 문자열 정리
#include «string»
string은 기본적으로 문자열을 저장, 수정하는 작업을 도와주는 라이브러리이다.
기본적으로, string 포함 vector등의 STL을 다루어 보았지만 심도있게 공부해본적도 없고, 알고리즘 문제를 풀수록 기본적인 STL 공부가 절실하다는 생각으로 이번 기회에 관련문서나 블로그 등의 내용을 참고하여 정리해보았다.
관련 주제로 들어가기 앞서 기본적인 내용을 짚고 넘어가자.
begin, end는 iterator이며, 이는 변수 내부의 값을 가르키는 포인터의 개념이다.
컨테이너.begin() → 원소의 첫번째 값을 가리킴
컨테이너.end() → 원소의 끝 + 1 번째 값을 가리킴
컨테이너가 비어있다면 begin()과 end()가 가리키는 값은 같고, 리턴값이 컨테이너.end()라면 에러가 날 수도 있다는 것을 인지해야한다!!
원소 접근 관련
- at: 특정 위치의 문자를 접근
- operater []: 특정 위치의 문자에 접근
반복자(Iterator) 관련
- begin/end: 컨테이너의 시작점(포함)/끝(포함x)을 가리키는 반복자
- rbegin/rend: 뒤집은 컨테이너의 시작점(포함)/끝(포함x)을 가리키는 반복자
크기/메모리 관련
- empty: 문자열이 비어있으면 true, 그렇지않으면 false 반환
- capacity: 문자열의 현재 할당된 공간의 크기 반환
-
문자열은 문자열이 늘어났을 때, 현재 capacity보다 클 경우
→ 더 큰 메모리를 사용할 수 있도록 재할당된다.
-
- reserve: 문자열이 차지 할 공간을 미리 할당
- size, length: 문자열의 길이 반환
- clear: 문자열 전체를 지움
- size와 length는 0이 되나, 할당됐던 공간의 크기 capacity는 0이 되지 않는다!
문자열 작업 관련
- insert:
- “문자열” 삽입
string st1; string st2; st1 = "MY NAME IS JACK"; st2 = "perfect"; st2.insert(st2.begin()+1, st1.begin(), st1.begin()+4); //st2의 1번 idx에 삽입 -> st1[0]부터 st1[4]까지 (st1[4]는 포함x) //출력: pMY Nerfect
st1 = "MY NAME IS JACK"; st1.insert(4, "hello"); //st1의 4번 idx에 "hello"를 삽입한다. //출력: MY NhelloAME IS JACK
- “문자” 여러번 반복 삽입
st1 = "MY NAME IS JACK"; st1.insert(4, 3, 'c'); //st1의 4번 idx에 'c'를 3번 삽입한다. //출력: MY NcccAME IS JACK
- erase: 원하는 범위의 문자를 삭제한다. (마찬가지로 capacity는 그대로, size와 length는 변함)
string st1;
string st2;
string st3;
st1 = "MY NAME IS JACK";
st2 = "perfect";
st3 = "Programming"
st1.erase(1, 4); //idx 1부터 4개의 문자를 지운다
cout<<st1<<endl;
st2.erase(st2.begin()+1, st2.begin()+4); // 1<= it < 4의 값을 지운다
cout<<st2<<endl;
st3.erase(st3.begin()+2); //2번 idx의 값을 지운다
cout<<st2;
erase는 find함수와 자주 사용한다.
ex)
string st1 = "Ia aama Paraoagaraaamaamear.";
while(find(st1.begin(), st1.end(), 'a') != st1.end()){
st1.erase(find(st1.begin(), st1.end(), 'a'));
}
cout<<st1;
//출력: I m Progrmmer.
- substr: 문자열의 일부분을 리턴한다.
- ex) str.substr(시작점idx, 길이)
string st1 = "one two three four"; st1.substr(4, 3); // return: "two" cout<<st1.substr(4, 3); //출력: "two"
-
copy: 문자열을 복사하는 함수
str1 = str2;
Leave a comment