1. 개요

std::string은 동적 크기를 가지는 문자열 클래스로, C 스타일 문자열(char*)보다 더 안전하고 편리합니다. C++의 <string> 헤더에 정의되어 있으며, std::basic_string<char>의 타입 정의입니다.

 #include <string>
 std::string str = "Hello, world!";

2. 주요 생성자

생성자 설명
string() 빈 문자열 생성
string(const char* s) C 문자열로부터 생성
string(const string& str) 복사 생성자
string(size_t n, char c) n개의 문자 c로 초기화
string(InputIterator first, InputIterator last) 범위 기반 생성

3. 주요 멤버 함수

🔹 크기 관련

함수 설명
size() / length() 문자열 길이 반환
empty() 비었는지 여부 확인
resize(n) 크기를 n으로 조정
clear() 문자열 비우기

🔹 접근 및 수정

함수 설명
operator[] / at() 인덱스를 통한 문자 접근
front() / back() 첫/마지막 문자 접근
append(), += 문자열 덧붙이기
insert(pos, str) 문자열 삽입
erase(pos, len) 문자열 삭제
replace(pos, len, str) 부분 문자열 교체
push_back(c) / pop_back() 뒤에 문자 추가/제거

🔹 검색

함수 설명
find(str) 부분 문자열 찾기
rfind(str) 뒤에서부터 찾기
find_first_of(chars) 일치하는 문자 중 첫 위치
find_last_of(chars) 일치하는 문자 중 마지막 위치

🔹 비교

함수 설명
compare(str) 문자열 비교 (0이면 동일)
==, !=, <, > 연산자 오버로딩 지원

🔹 기타

함수 설명
substr(pos, len) 부분 문자열 추출
c_str() C 문자열(char*) 반환
copy(buf, len, pos) 문자열을 배열에 복사

4. 연산자 오버로딩

 +   // 문자열 덧붙이기
 ==, !=, <, >, <=, >= // 비교
 []  // 문자 접근
 <<, >> // 입출력 스트림

5. 예제 코드

 #include <iostream>
 #include <string>
 using namespace std;
 
 int main() {
     string s = "Hello";
     s += " World";
     cout << s << " (length: " << s.length() << ")" << endl;
 
     s.replace(0, 5, "Hi");
     cout << s << endl;
 
     size_t pos = s.find("World");
     if (pos != string::npos)
         cout << "Found at: " << pos << endl;
 
     return 0;
 }

6. 관련 타입

  • std::wstring: 유니코드 지원 (wide character)
  • std::u16string, std::u32string: UTF-16, UTF-32 문자열
  • std::string_view (C++17): 읽기 전용 문자열 뷰

글 이동

Comments