본문 바로가기

Algorithms/C++ STL

C++ ::string

으.. c++로 문자열처리를 하게될줄이야..

 

오늘 포스팅은 문자열 처리를 다루는 포스팅입니다~

 

자세한 내용은 http://www.cplusplus.com/reference/string/string/

 

string - C++ Reference

 

www.cplusplus.com

위 사이트를 참조하세요!

 

문자 삽입(push_back함수)

string 객체 마지막에 character형 문자를 삽입해주는 경우입니다.

 

character형을 삽입해준다는점 반드시 기억해두세요!

 

예제

출력결과

ASCII CODE 48은 '0'에 해당하는 문자값이므로, push_back()함수에 의해 맨 마지막부터 삽입이 되었습니다.

 

※ 문자 수정의 경우는 [] 연산자를 이용해 접근, 수정해줄 수 있습니다. ※

문자열 삽입(append함수)

문자 삽입은 push_back으로 가능했습니다! 문자열을 삽입해줄땐 append함수를 사용합니다.

 

무슨차이일까요? 또 언제 쓸까요?

 

 만약 글자를 문자열로 바꿔주는 코드를 작성한다면, 0부터 9까지의 값은 48을 더해서 아스키코드 값으로 직접 매핑해줄 수 있습니다. 원래 이렇게 하면 안되지만 01, 02, 03 처럼 앞에 0을 매꿔야하는 경우 유용합니다. 그런데 10부터는 이렇게 매핑하면 올바른 값이 나오지 않아요 ( - ㅇ -);; 10부터는 to_string()이란 함수를 이용해줍니다. 

 

 push_back과 append는 기존 문자열의 맨 마지막 부분에 삽입해준다는 공통점이 있고, push_back은 character형 문자(한글자)를 대상으로 수행한다면, append는 string형 문자열(여러글자)를 대상으로 수행하는 차이점이 있습니다! ㅎㅎ

 

숫자를 문자열로 변환해주는 함수 - to_string()

 

to_string함수를 이용해서 숫자를 문자열로 바꿔줄 수 있습니다. 

 

예제

 

출력결과

 

문자열 비교(compare함수)

알고리즘 구현을 위해 문자열을 비교해야할 경우가 있습니다.

c에 strcmp()함수가 있듯 C++ string 객체에는 compare()이라는 맴버함수가 있습니다.

함수

결과

설명

arg1.compare(arg2) 0 arg1과 arg2가 같은 경우
arg1.compare(arg2) 1 arg1 > arg2
arg1.compare(arg2) -1 arg1 < arg2

문자열 arg1에서 arg2를 뺀 값이 음수면 -1을, 양수면 1을 반환합니다.

arg1과 arg2이 같은 문자열이라면 arg1 - arg2=0 이 됩니다.

 

예시

ASCII CODE의 영문대문자는 65번부터 시작하고 영문소문자는 97번부터 시작해요.

 

a에서 b를 빼주면 -가 되겠죠?? 출력결과는 -1이 됩니다.

 

이때 빼주는 것은 가장 앞쪽에서부터 빼줍니다. b가 "aZZZ" 이더라도 제일 앞 문자에서 음수가 되었으므로

출력결과는 -1이 됩니다.

 

문자열 자르기(substr함수)

 

substr함수는 substr(offset, count)로 구성되어 있습니다.

offset 부터 count만큼의 문자열을 반환하는 함수입니다.

 

예시

이 경우 a문자열을 아래와 같은 배열로 생각할 수 있어요.

0 1 2 3 4 5 6 7 8 9
s o f f t   w a r e

a.substr(0,3)은 offset 0부터 3개 만큼의 문자열인 'sof'를 가져오는 명령어입니다.

a.substr(4,1)은 offset 4부터 1개 만큼의 문자열인 't'를 가져옵니다.

a.substr(6)은 offset 6부터 \n 만날때까지 문자열인 ware을 가져옵니다.

 

출력결과

 

'Algorithms > C++ STL' 카테고리의 다른 글

Algorithm 라이브러리 [C++ 코딩테스트 대비]  (0) 2020.08.27
C++ STL::Queue::Priority_Queue  (0) 2019.08.31
C++ STL::Queue  (0) 2019.07.04
C++ STL::Vector  (0) 2019.06.27