[C++] String

z_zen ㅣ 2025. 1. 9. 23:15

728x90

C++에서 std::string 사용법 정리

C++ 표준 라이브러리의 std::string은 문자열을 처리할 때 사용하는 강력한 클래스입니다. 다음은 std::string의 주요 사용법과 활용 예제입니다.


1. 문자열 초기화 및 선언

기본 선언 및 초기화

std::string str1;                  // 빈 문자열
std::string str2 = "Hello";        // "Hello"로 초기화
std::string str3("World");         // "World"로 초기화
std::string str4(5, 'A');          // "AAAAA" 생성 ('A'를 5번 반복)

2. 문자열 입력 및 출력

표준 입력과 출력

std::string name;
std::cout << "Enter your name: ";
std::cin >> name;  // 공백 이전까지만 입력받음
std::cout << "Hello, " << name << "!" << std::endl;

공백 포함 문자열 입력

std::string sentence;
std::cout << "Enter a sentence: ";
std::getline(std::cin, sentence);  // 공백 포함 문자열 입력
std::cout << "You entered: " << sentence << std::endl;

3. 문자열 연결

+ 연산자를 이용한 연결

std::string str1 = "Hello";
std::string str2 = "World";
std::string result = str1 + " " + str2;  // "Hello World"

+= 연산자를 이용한 연결

std::string str = "Hello";
str += " ";
str += "World";  // "Hello World"

4. 문자열 크기 및 길이

문자열 길이 확인

std::string str = "Hello";
std::cout << "Length: " << str.length() << std::endl;  // 5
std::cout << "Size: " << str.size() << std::endl;      // 5 (length와 동일)

5. 특정 문자 접근

인덱스를 이용한 접근

std::string str = "Hello";
char first = str[0];  // 'H'
char last = str[str.length() - 1];  // 'o'

at() 메서드 이용

char second = str.at(1);  // 'e'

6. 문자열 비교

==, != 연산자

std::string str1 = "Hello";
std::string str2 = "World";
if (str1 == str2) {
    std::cout << "Strings are equal" << std::endl;
} else {
    std::cout << "Strings are not equal" << std::endl;
}

사전순 비교 (<, >, <=, >=)

if (str1 < str2) {
    std::cout << str1 << " comes before " << str2 << std::endl;
}

7. 문자열 수정

문자 추가 및 삭제

std::string str = "Hello";
str.push_back('!');  // "Hello!"
str.pop_back();      // "Hello"

부분 문자열 삽입

str.insert(5, " World");  // "Hello World"

부분 문자열 제거

str.erase(5, 6);  // "Hello" (5번 인덱스부터 6글자 삭제)

8. 부분 문자열 추출

substr() 메서드

std::string str = "Hello World";
std::string sub = str.substr(0, 5);  // "Hello" (0번 인덱스부터 5글자)

9. 문자열 검색

특정 문자 검색

std::string str = "Hello World";
size_t pos = str.find('o');  // 첫 번째 'o'의 위치 (4)

특정 문자열 검색

size_t pos = str.find("World");  // "World"의 시작 위치 (6)

문자열 뒤에서 검색

size_t pos = str.rfind('o');  // 마지막 'o'의 위치 (7)

10. 문자열 정렬

정렬 예제

#include <algorithm>
std::string str = "dcba";
std::sort(str.begin(), str.end());  // "abcd"

11. 문자열 변환

숫자를 문자열로 변환

int num = 123;
std::string str = std::to_string(num);  // "123"

문자열을 숫자로 변환

std::string str = "123";
int num = std::stoi(str);  // 123
double d = std::stod(str); // 123.0

12. 기타 유용한 메서드

문자열 비우기 및 확인

std::string str = "Hello";
str.clear();  // 문자열 비우기
if (str.empty()) {
    std::cout << "String is empty" << std::endl;
}

문자열 반복

std::string str(5, '*');  // "*****" (문자 '*'를 5번 반복)

13. 2차원 문자열 벡터

std::vector<std::string> vec = {"Apple", "Banana", "Cherry"};
for (const auto& s : vec) {
    std::cout << s << std::endl;
}

 

728x90