[C++] String

yeolife ㅣ 2023. 7. 5. 00:48

특징

#include <string>
  • 문자열의 끝에 null 문자('\0')가 포함되지 않음
  • 문자열 길이가 가변적임
  • 배열처럼 한 문자씩 다룰 수 있음

 

생성

설명 코드
문자열 생성 string str

 

참조 및 반복자

설명 코드
i번째 원소를 참조 (범위 점검o) str.at(i)
i번째 원소를 참조 (범위 점검x) str[i]
첫번째 원소 참조 str.front()
*str.begin()
마지막 원소 참조 str.back()
첫번째 원소의 주소값 str.begin()
마지막 원소의 다음 주소값 str.end()
마지막 원소의 주소값을 시작점으로 설정 str.rbegin()
첫번째 원소의 주소값을 끝점으로 설정 str.rend()

 

수정자

설명 코드
str에 str2 할당 str.assign(str2)
공백을 포함해서 문자열을 입력 받음
※ 버퍼가 남아 있으면 ignore
// cin.ignore()
getline(cin, str)
i번째 위치에 str2를 삽입 str.insert(i, str2)
[s, e] 범위의 문자를 제거 str.erase(s, e)
i번째 문자 하나를 제거 str.erase(str.begin() + i)
문자열 공백제거 str.erase(remove(str.begin(), str.end(), ' '), str.end())
마지막 원소 뒤에 'A' 삽입 str.push_back('A')
마지막 원소 제거 str.pop_back()
str 뒤에 str2를 이어 붙임
※ "+=" 와 같음
str.append(str2)
str 뒤에 N개의 'A'를 이어 붙임 str.append(N, 'A')
str 뒤에 str2의 i번째부터 N개의 문자를 이어 붙임 str.append(str2, i, N)
i번째부터 N개의 문자를 str2로 대체 str.replace(i, N, str2)
str을 char[] 형식의 배열 변수에 복사 str.copy(arr, N)
str1과 str2의 원소와 capacity를 교환 str1.swap(str2)
모든 원소 제거
※ capacity는 그대로
str.clear()

 

크기 및 Capacity

설명 코드
문자열의 길이 반환 str.length()
문자열의 크기 반환 str.size()
문자열에 할당될 수 있는 최대 메모리 크기 반환 str.max_size()
크기를 N으로 재할당
※ 크기보다 더 크면 'A' 할당
str.resize(N, 'A')
N개의 원소 공간을 미리 할당 str.reserve(N)
할당된 공간의 크기 반환 str.capacity()
비어있는 capacity를 줄여줌 str.shrink_to_fit()
문자열이 비어있으면 True, 아니면 False를 반환 str.empty()

 

연산

설명 코드
"abc"의 첫번째 위치 반환
※ 존재하지 않으면 -1
str.find("abc")
i번째 부터 "abc"의 첫번째 위치 반환 str.find("abc", i)
find과 같지만 뒤에서부터 찾음 str.rfind("abc")
처음부터 "abc" 중 하나라도 존재하면 해당 위치를 반환 str.find_first_of("abc")
처음부터 "abc"에 포함되지 않는 위치를 반환 str.find_first_not_of("abc")
마지막부터 "abc" 중 하나라도 존재하면 해당 위치를 반환 str.find_last_of("abc")
마지막부터 "abc" 에 포함되지 않는 위치를 반환 str.find_last_not_of("abc")
str의 i번째부터 끝까지 반환 str.substr(i)
str의 i번째부터 N개의 문자 반환 str.substr(i, N)
str = str2 (0 반환)
str > str2 (1 반환)
str < str2 (-1 반환)
str.compare(str2)
숫자면 True, 아니면 False를 반환 isdigit(str[i])
영어면 True, 아니면 False를 반환 isalpha(str[i])
str[i]을 대문자로 변환 toupper(str[i])
str[i]을 소문자로 변환 tolower(str[i])
문자열을 대문자로 변환
※ #include <algorithm> 헤더파일 필요 
transform(str.begin(), str.end(), str.begin(), ::touppwer)
문자열을 소문자로 변환
※ #include <algorithm> 헤더파일 필요
transform(str.begin(), str.end(), str.begin(), ::tolower)
문자열 오름차순 정렬 sort(str.begin(), str.end())
문자열을 거꾸로 뒤집음 reverse(str.begin(), str.end())
문자 ch의 첫 인덱스 반환
※ 존재하지 않으면 NULL

※ #include <string.h> C헤더파일 필요 
strchr(str,ch)
문자 ch의 마지막 인덱스 반환 strrchr(str,ch)