C++ std::string 클래스
1. 개요
1.1 문서 개요
이 문서는 C++에서 제공하는 표준 문자열 클래스인 std::string
에 대해 기록하는 문서입니다. std::string
은 C++ 표준 라이브러리에서 제공하는 고수준 문자열 자료형으로, 메모리 관리, 연산자 오버로딩, 다양한 멤버 함수를 통해 문자열 처리 작업을 간결하고 안전하게 수행할 수 있도록 설계되었습니다. C 스타일 문자열에 비해 직관적인 인터페이스를 제공하며, 자동으로 null 종료 문자와 메모리를 관리합니다.
2. 내용
2.1 std::string의 선언과 초기화
2.1.1 문자열 리터럴로 초기화
#include <string>
#include <iostream>
int main() {
std::string s1 = "Hello";
std::string s2("World");
std::string s3(s1); // 복사 생성자 사용
}
2.1.2 빈 문자열 및 반복 문자 생성
std::string empty; // 빈 문자열
std::string repeated(5, 'A'); // "AAAAA"
2.2 문자열 결합 및 조작
2.2.1 문자열 덧셈 연산자
std::string full = s1 + " " + s2; // "Hello World"
2.2.2 append 함수
s1.append(" Everyone"); // s1 = "Hello Everyone"
2.2.3 push_back 및 pop_back
s1.push_back('!'); // 마지막에 문자 추가
s1.pop_back(); // 마지막 문자 제거
2.3 문자열 비교 및 검색
2.3.1 비교 연산자
==
, !=
, <
, >
등의 연산자를 오버로딩하여 문자열 간 비교가 가능합니다.
if (s1 == "Hello") { ... }
2.3.2 find 및 rfind
size_t pos = s1.find("lo"); // 앞에서부터 검색
size_t rpos = s1.rfind("l"); // 뒤에서부터 검색
2.4 부분 문자열 추출 및 변형
2.4.1 substr 함수
std::string sub = s1.substr(0, 5); // "Hello"
2.4.2 erase, insert, replace
s1.erase(0, 2); // 앞의 두 문자 제거
s1.insert(0, "He"); // 앞에 삽입
s1.replace(0, 5, "Hi"); // 앞 5문자 "Hi"로 대체
2.5 문자열 길이 및 변환
2.5.1 length와 size
두 함수는 동일한 결과를 반환합니다.
std::cout << s1.length(); // 출력: 11
2.5.2 c_str 함수
C 스타일 문자열(const char*
)로 변환할 때 사용됩니다.
const char* cstr = s1.c_str();
3. 마무리
std::string
클래스는 C++의 고수준 문자열 처리 도구로, 메모리 관리와 문자열 조작의 복잡성을 줄이고 다양한 내장 함수를 통해 유연하게 문자열을 다룰 수 있도록 지원합니다. 비교, 검색, 수정, 결합, 변환 등 다양한 기능을 내포하고 있으며, C 스타일 문자열과의 상호 변환 기능도 함께 제공합니다.