본문 바로가기
Develop/Cpp

[C++] String 클래스

by Tarra 2022. 6. 22.

 

 


개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.

 

C++이 제공하는 STL 중 하나인 string에 대해서 적어보았다.

 

일단 공부하는대로 추가할 예정이므로, 빠진 내용이 있을 수 있는 점 양해바랍니다.

 

 

 

string이란?


C++ STL에서 제공하는 클래스로, string (문자열)을 다루는 클래스이다.

 

string을 쓰기 전에는 char 자료형을 사용하여 문자열을 다루었다면, 

 

이제는 문자열을 string으로 선언하고, 마지 하나의 다른 자료형을 사용하는 것처럼 다룰 수 있게 된다.

 

또한, string의 경우 char와 다르게 문자열의 끝에 "\0" (null) 이 들어가지 않으며 문자열의 길이를 동적으로 다룰 수 있다.

 

 

 

 

 

 

 

string 클래스 사용법


 

string을 사용하기 위해서는 먼저, 코드의 헤더 부분에 string을 삽입 시켜주어야, 해당 메소드들을 사용할 수 있다.

 

(+ iostream 헤더를 사용한다면, iostream 헤더 안에 string 헤더가 포함되어 있어, 둘 중 하나만 포함해도 무방하다고 한다. )

 

 

 

 

 

string 입출력

string의 입출력은 다음과 같은 방법으로 사용이 가능하다.

 

 

cin의 경우에는 공백을 기준으로 입력을 받기 때문에, 공백이 필요한 한 줄 자체를 입력받고 싶다면

 

getline(cin, str) 메소드를 사용해 입력을 받아야한다.

 

 

 

앞선 필기에서 string 대신 char를 기준으로 공부했던 이유.

string 클래스의 경우에도 내부적으로는 char와 큰 차이가 없는 로직으로 작동하기 때문에,

정확한 메커니즘이나, 시간 복잡도를 좀 더 쉽게 이해하기 위해 char관련 클래스를 먼저 배우게 된다.

 

 

 

 

 

string 메서드


string str 을 선언했을 경우를 기준으로 한다.

 

 

find()

문자열에서 어떠한 문자열을 찾는 메소드이다.

 

예를 들어 다음과 같은 코드를 짰다면, str1에서 str2를 찾아 해당 str2 문자열의 위치를 반환해준다.

 

 

 

(만약 해당 str1 문자열에 str2 문자열이 여러개가 존재한다면, 제일 앞에 있는 문자열의 위치를 반환한다.)

 

여기서 맨 앞에 있는 str2가 아닌 특정 위치 이후의 str2를 원한다면 find(str2, idx)의 idx 자리에 변수를 넣어

 

특정 idx 위치에서부터 str2를 찾을 수 있게 된다.

 

 

 

만약 해당 str2를 찾지 못한 경우?

 

찾고자 하는 문자열을 찾지 못한 경우, 해당 메소드는 str1.npos 라는값을 리턴하게 되므로

 

npos를 이용하면 여러가지 방법으로도 활용이 가능하다.

 

 

 

 

 

substr()

문자열의 일부를 리턴해주는 메서드이다.

 

파이썬의 슬라이싱과 유사하게 문자열을 잘라준다고 생각하면 편하며,

 

다음과 같은 형식으로 인자를 2개 이용해 사용한다.

 

 

위의 경우에는 str의 2번 인덱스로부터 2개를 잘라 리턴해주게 되며,

 

해당 코드의 출력값은 "CD" 가 나오게 된다.

 

 

 

 

 

 

erase()

string에서 특정 인덱스의 문자를 지우고 싶다면 사용하는 메소드이다.

 

()내에 특정 인덱스를 입력하면 해당 인덱스의 문자가 삭제되게 된다.

 

 

 

 

 

 

자료형 변환

string으로 선언한 자료형을 int형으로 바꾸거나

 

int 자료형을  string으로 변환해야 하는 일이 간간히 생기게 된다.

 

이 때 사용하는 메소드는 2개가 있다.

 

 

stoi()

 

 

 

to_string()

 

 

'Develop > Cpp' 카테고리의 다른 글

[C++] sort (정렬)  (0) 2022.06.25
[C++] STL vector  (0) 2022.06.23
[Cpp] Direct 배열  (0) 2022.06.22
[Cpp] 문자열 함수 (cstring)  (0) 2022.06.22
[Cpp] STL (스택, 큐, 우선순위 큐)  (0) 2022.06.22