티스토리 뷰
string
문자열을 컨트롤하는 방법
헤더 |
C++ | string |
C | string.h |
string은 C++에서 문자열을 다루는 클래스 입니다.
기본적으로 문자열은 문자형 데이터의 배열 집합이라 볼 수 있습니다.
하여, 실제로 string을 문자 배열과 같이 사용이 가능하고, 배열에 사용되는 함수들도 대부분 string에 적용이 가능합니다.
string 클래스 사용법
입출력
string은 cin, cout을 통해 기본 자료형과 동일히 입출력이 가능합니다.
string이 기본 자료형이 아님에도 범용성이 높아 기본 입출력 클래스가 처리 가능하도록 작성되어 있습니다.
#include <string>
#include <iostream>
using namespace std;
int main(void) {
string str = Hello;
cin >> str;
cout << str << endl;
return 0;
}
Hello
Hello
원소 접근
string는 다양한 방법으로 문자열의 각 원소에 접근할 수 있습니다.
1. 인덱스 접근법
- 인덱스 연산자를 통한 배열 원소 접근
std::string str = "Hello, World!";
char firstChar = str[0]; // 첫 번째 문자에 접근
char fifthChar = str[4]; // 다섯 번째 문자에 접근
2. 'at()'함수 접근법
- string 내부 함수 at 사용
std::string str = "Hello, World!";
char firstChar = str.at(0); // 첫 번째 문자에 접근
char fifthChar = str.at(4); // 다섯 번째 문자에 접근
3. C 문자열 스타일 접근법
- C에서 사용하는 문자열 자료형인 char*형으로 변환하여 사용하는 방법
std::string str = "Hello, World!";
const char* cString = str.c_str();
char firstChar = cString[0]; // 첫 번째 문자에 접근
string 클래스 기능
string 길이
string의 길이를 반환하는 함수로 length()와 size() 함수가 있습니다.
length와 size는 문자열의 길이를 반환하는 공통점과 극명한 차이점들을 가지고 있습니다.
length | size |
string 내부 함수 | C++ 컨테이너 기본 함수 |
string 값을 순회하며 하나씩 개수를 세어 반환 | 컨테이너가 사용하는 크기 변수 값 반환 |
NULL 값을 포함하지 않은 문자열 크기 반환 | NULL 값을 포함한 문자열 크기 반환 |
시간 복잡도 O(n) | 시간 복잡도 O(1) |
string str = "Hello, World!";
cout << str.length() << endl;
string str = "Hello, World!";
cout << str.size() << endl;
string의 메모리 할당량
string가 차지하고 있는 크기를 알기 위해서는 capacity()함수를 사용합니다.
string str = "Hello, World!";
cout << str.capacity() << endl;
연산자
string은 각종 연산자로 문자열의 변형을 자유롭게 할 수 있습니다.
string str = "Hello, World!";
string gather = str + " Tomorrow!";
str += " HAHA";
cout << str << endl; // Hello, World! HAHA
cout << gather << endl; // Hello, World! Tomorrow!
Hello, World! HAHA
Hello, World! Tomorrow!
반복자 (iterator)
begin | 첫 원소의 반복자 반환 | cbegin | 첫 원소 반복자를 상수 값으로 반환 |
end | 마지막 원소의 반복자 반환 | cend | 첫 마지막 반복자를 상수 값으로 반환 |
rbegin | 마지막 원소를 첫 원소처럼 반환 (end를 begin처럼 사용 가능) | crbegin | 마지막 원소를 첫 원소처럼 상수 값으로 반환 (cend를 cbegin처럼 사용 가능) |
rend | 첫 원소를 마지막 원소처럼 반환 (begin를 end처럼 사용 가능) | crend | 첫 원소를 마지막 원소처럼 상수 값으로 반환 (cbegin를 cend처럼 사용 가능) |
이외
string이 지원하는 함수들은 하나하나가 계륵 같으니 시간이 날때, 한번씩 읽어봅시다.
자주 사용되는 것들은 좀더 하이라이트 처리하였습니다.
용량 관련 함수 | 반환 | |
size | 현재 문자열의 크기 반환 | |
length | ||
max_size | 문자열의 최대 크기 반환 (메모리 크기나 resize여부에 따라 최대 크기가 다를 수 있다.) | |
resize | 문자열 크기 설정 | |
capacity | 문자열 메모리 할당 크기 설정 | |
reserve | 문자열 메모리 할당 크기 재설정 | |
clear | 문자열 초기화 | |
empty | 빈 문자열 검사 | bool |
shrink_to_fit | 문자열의 문자 수만큼 할당크기를 줄이는 함수 |
원소 접근 관련 함수 | 반환 | |
operator[] | []연산자 | 지정 위치 문자 |
at | 문자 위치 반환 | 지정 위치 문자 |
back | 가장 뒷자리 문자 반환 | 가장 뒷 자리 문자 |
front | 가장 앞자리 문자 반환 | 가장 앞 자리 문자 |
getline | 템플릿 string입력 스트림에서 한 줄씩 추출 |
변환 관련 함수 | 반환 | |
operator+= | +연산자를 통해 사칙연산과 같이 여러 문자열들을 복사하여 원하는 위치에 이어붙인다. | |
append | 목표 문자열을 복사하여 현재 문자열 뒤에 붙인다. | |
push_back | 문자열 뒤에 새로운 문자 입력 | |
assign | 특정 위치에 기존 문자를 덮어쓰며 다른 문자를 입력 | |
insert | 특정 위치에 기존 문자를 뒤로 밀어내며 문자를 입력 | |
erase | 특정 위치의 일정 범위의 문자들을 제거 | |
replace | 특정 문자를 교체 | |
swap | 두 문자열의 내용을 교환 | |
pop_back | 가장 뒷 문자 제거 |
String 연산 관련 함수 | 반환 | |
c_str | C언어 스타일의 문자열 반환 | const char* |
data | 현재 문자열 데이터 반환 | const char* |
get_allocator | Allocator 반환 | allocator_type |
copy | 다른 문자열의 내용을 복사하여 반영 | size_t |
find | 현재 문자열에 목표 문자열과 동일한 값들이 있는지 확인 후 반환 | string |
rfind | 현재 문자열에 목표 문자열과 동일한 값들이 있는지 뒷자리부터 확인 후 반환 | string |
find_first_of | 현재 문자열에 목표 문자열과 동일한 값들 중 처음으로 매칭되는 값 반환 | string |
find_last_of | 현재 문자열에 목표 문자열과 동일한 값들 중 마지막으로 매칭되는 값 반환 | string |
find_first_not_of | 가장 뒷 문자 제거 | char |
find_last_not_of | 찾으려는 값과 다른 문자들 중 가장 마지막 문자 출력 | char |
substr | 문자열의 일부분을 추출 | string |
compare | 두 문자열 비교 | bool |
연산자 | 반환 | |
operator+ | 두 문자열 개체를 합하고 결과 값을 복사하여 반환하는 연산자 | basic_string |
operator!= | l-value와 r-value 문자열 개체들이 같지 않은지 테스트 | bool |
operator== | l-value와 r-value 문자열 개체들이 같은지 테스트 | |
operator< | l-value가 r-value 문자열 보다 작은지 테스트 | |
operator<= | l-value가 r-value 문자열 보다 작거나 같은지 테스트 | |
operator<< | 문자열을 출력 스트림에 삽입 (cout) | |
operator> | l-value가 r-value 문자열 보다 큰지 테스트 | bool |
operator>= | l-value가 r-value 문자열 보다 크거나 같은지 테스트 | |
operator>> | 문자열을 입력 스트림에 삽입 (cin) |
형변환 관련 함수 | 반환 | |
hash | 문자열의 해시를 생성 | |
stod | 문자 시퀀스를 double으로 변환 | |
stof | 문자 시퀀스를 float으로 변환 | |
stoi | 문자 시퀀스를 int으로 변환 | |
stold | 문자 시퀀스를 long double으로 변환 | |
stoll | 문자 시퀀스를 long long으로 변환 | |
stoul | 문자 시퀀스를 unsigned long으로 변환 | |
stoull | 문자 시퀀스를 unsigned long long으로 변환 | |
to_string | 값을 string로 변환 | |
to_wstring | 값을 와이드 문자열로 변환 |
참고자료
https://cplusplus.com/reference/string/string/
cplusplus.com
'Computer Language > C & C++' 카테고리의 다른 글
[C++] 4) C++ 스타일 기본 문법 :: 함수 (1) | 2023.11.20 |
---|---|
[C++] 3) C++ 스타일 기본 문법 :: 레퍼런스와 r-value 참조 (2) | 2023.11.20 |
[C++] 1) C++ 스타일 기본 문법 :: 입출력 (3) | 2023.11.20 |
[C++] Unique 함수 (0) | 2023.11.15 |
[C/C++] Memset (0) | 2023.11.05 |