Taene's

[C++] string (문자열) 본문

C++ 개념 공부

[C++] string (문자열)

taene_ 2023. 9. 2. 10:27

<string 라이브러리의 getline()>

  • getline(cin, 문자열을 저장할 string객체, 종결 문자);
  • 최대 문자 수를 입력하지 않아도 된다.
  • 종결 문자를 만날 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장한다.

<istream 라이브러리의 cin.getline()>

  • cin.getline(변수 주소, 최대 입력 가능 문자수, 종결 문자);
  • 문자 배열이며 마지막 글자가 ‘\0’(terminator)인 c-string을 입력 받는데 사용한다.
  • n-1개의 문자 개수만큼 읽어와 str에 저장한다. (n번째 문자는 NULL(‘\0’)로 바꾼다.)
  • 종결 문자를 별도로 지정해주지 않으면 엔터(‘\n’)로 인식한다.

 

<string 클래스 멤버함수>

- string의 특정 원소 접근

 str.at(index) index 위치의 문자 반환. 유효한 범위인지 체크 O
 str[index] index 위치의 문자 반환. 유효한 범위인지 체크 X. 따라서 at 함수보다 접근이 빠름
 str.front() 문자열의 가장 앞 문자 반환
 str.back() 문자열의 가장 뒤 문자 반환

 

- string의 크기

 str.length() 문자열 길이 반환
 str.size() 문자열 길이 반환 (length와 동일)
 str.capacity() 문자열이 사용중인 메모리 크기 반환
 str.resize(n) string을 n의 크기로 만듦. 기존의 문자열 길이보다 n이 작다면 남은 부분은 삭제하고, n이 크다면 빈공간으로 채움
 str.resize(n, 'a') n이 string의 길이보다 더 크다면, 빈 공간을 'a'로 채움
 str.shrink_to_fit() string의 capacity가 실제 사용하는 메모리보다 큰 경우 낭비되는 메모리가 없도록 메모리를 줄여줌
 str.reserve(n) size = n만큼의 메모리를 미리 할당해줌
 str.empty() str이 빈 문자열인지 확인

 

- string에 삽입, 추가, 삭제

 str.append(str2) str 뒤에 str2 문자열을 이어 붙여줌 ('+' 와 같은 역할)
 str.append(str2, n, m) str 뒤에 'str2의 n index부터 m개의 문자'를 이어 붙여줌
 str.append(n, 'a') str 뒤에 n개의 'a'를 이어 붙여줌
 str.insert(n, str2) n번째 index 앞에 str2 문자열을 삽입함.
 str.replace(n, k, str2) n번째 index부터 k개의 문자를 str2로 대체함
 str.clear() 저장된 문자열을 모두 지움
 str.erase(n, m) n번째 index부터 m개의 문자를 지움
 str.erase(n, m) (iterator) n~m index의 문자열을 지움 (n과 m은 iterator)
 str.erase() clear와 같은 동작
 str.push_back(c) str의 맨 뒤에 c 문자를 붙여줌
 str.pop_back() str의 맨 뒤의 문자를 제거
 str.assign(str2) str에 str2 문자열을 할당. (변수 정의와 동일)

 

- 기타 유용한 string 멤버 함수

 str.find("abcd") "abcd"가 str에 포함되어있는지를 확인. 찾으면 해당 부분의 첫번째 index를 반환
 str.find("abcd", n) n번째 index부터 "abcd"를 find
 str.substr() str 전체를 반환
 str.substr(n) str의 n번째 index부터 끝까지의 문자를 부분문자열로 반환
 str.substr(n, k) str의 n번째 index부터 k개의 문자를 부분문자열로 반환
 str.compare(str2) str과 str2가 같은지를 비교. 같다면 0, str<str2 인 경우 음수, str>str2 인 경우 양수를 반환
 swap(str1, str2) str1과 str2를 바꿔줌. reference를 교환하는 방식
 isdigit(c) c 문자가 숫자이면 true, 아니면 false를 반환 
 isalpha(c) c 문자가 영어이면 true, 아니면 false를 반환
 toupper(c) c 문자를 대문자로 변환
 tolower(c) c 문자를 소문자로 변환

 

<string의 int 변환>

stoi = string to int

stof = string to float

stol = string to long

stod = string to double

'C++ 개념 공부' 카테고리의 다른 글

[C++] ios_base::sync_with_stdio  (0) 2023.09.02
[C++] 데이터 형식과 범위  (0) 2023.09.02
C++ 연산자 오버로딩  (0) 2023.08.26
C++ 달팽이 문제  (0) 2023.08.25
C++ 로또 번호 생성기  (0) 2023.08.25