특징
#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) |