[C++] string 클래스

Doorbals·2023년 1월 1일
1

CPP

목록 보기
1/16

1. string 클래스

  • C에서 char* 또는 char[]의 자료형으로 문자열을 다룬 것과 다르게 문자열을 하나의 변수 타입으로 사용해 문자열을 쉽게 다룰 수 있게 해주는 클래스
  • char* 또는 char[]과 달리 문자열 끝에 '\0'이 들어가지 않으며, 문자열 길이를 동적으로 변경할 수 있다.

2. string 클래스 생성 방법

코드내용
string str;빈 문자열 str 생성
string str = "abc""abc"로 선언된 str 생성
string str2(str1)str1 string을 복사한 str2 생성
string *str = new string("abc")new 이용 동적 할당

3. string 클래스 연산자 활용

1) 문자열 연결 (+) : 두 문자열을 이어준다.

ex.
string str1 = "abc";
string str2 = "def";
string str3 = str1 + str2;
cout << str3;

출력 결과 : "abcdef"

2) 문자열 비교 (<, >, ==) : 두 문자열의 사전 상 순서를 비교하거나, 동일 여부 파악 가능

string str1 = "abc";
string str2 = "bcd";
string str3 = "abc";

cout << (str1 > str2) << " ";	// 사전 순서가 더 느린 것이 더 큰 것
cout << (str1 < str2) << " ";
cout << (str1 == str3) << " ";

출력 결과 : 0 1 1

4. string 클래스 멤버 함수

1) 특정 원소 접근

코드내용
str.at(index)index 위치 문자 반환. 유효 범위 체크 O (유효 범위 아니면 정지)
str[index]index 위치 문자 반환. 유효 범위 체크 X
str.front()문자열 가장 앞 문자 반환
str.back()문자열 가장 뒤 문자 반환

2) 크기 확인

코드내용
str.length()문자열 길이 반환
str.size()문자열 길이 반환
str.capacity()문자열이 사용 중인 메모리 크기 반환
str.reserve(n)size == n 만큼의 메모리를 미리 할당
str.shrink_to_fit()  문자열이 실제 사용 메모리보다 큰 메모리를 잡고 있으면 메모리를 줄여줌.
str.resize(n)문자열의 크기를 n으로 만듦. 기존 문자열보다 n이 크면 빈 공간으로 채우고, n이 더 작으면 뒷 부분 삭제
str.resize(n, 'a')위와 같지만 n이 더 큰 경우에 'a'로 채움.
str.empty()빈 문자열인지 확인

3) 삽입, 추가, 삭제

코드내용
str.insert(n, str2)str의 n번째 인덱스 뒤에 str2 삽입
str.replace(n, k, str2)n번째 인덱스부터 k개의 문자를 str2로 대체
str.replace(str.begin()+n, str.begin()+m, str2)n번째 인덱스부터 m번째 인덱스 직전까지의 문자열을 str2로 대체
str.append(str2)str 뒤에 str2 이어 붙여줌.
str.append(str2, n, m)str2의 n번째 인덱스부터 m개의 문자를 이어 붙여줌.
str.append(n, 'a')str 뒤에 n개의 'a'를 이어 붙여줌.
str.erase(n, m)n번째 인덱스부터 m개의 문자를 지움.
str.erase()문자열을 전부 지움
str.clear()문자열을 전부 지움
str.push_back(a)str 맨 뒤에 문자 a를 붙여줌
str.pop_back()str 맨 뒤의 문자를 제거
str.assign(str2)str에 str2를 할당

4) 기타 함수들

코드내용
str.find("abc")"abc"가 문자열에 포함되어 있는지 확인하고, 있으면 첫번째 인덱스 반환
str.substr()문자열 전체 반환
str.substr(n)n번째 인덱스부터 끝까지 문자열 반환
str.substr(n, k)n번째 인덱스부터 k개의 문자를 문자열로 반환
str.compare(str2)str과 str2가 같은지 비교. 같으면 0, str < str2이면 음수, 반대면 양수 반환
swap(str1, str2)str1과 str2의 내용을 바꿔줌.

5) char에 적용하는 함수들

코드내용
isdigit(a)a 문자가 숫자이면 true, 아니면 false 반환
isalpha(a)a 문자가 영어이면 true, 아니면 false 반환
toupper(a)a 문자를 대문자로 반환
tolower(a)a 문자를 소문자로 반환
profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글