티스토리 뷰

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

 

최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함