학습
C++ 문자열 클래스 (std::string)
C++ 문자열 클래스 (std::string) — 중급
문자열 클래스 (std::string)
1. 도입 (왜 배워야 하는가)
C++에서 문자열은 매우 중요한 데이터 타입입니다. 우리는 다양한 데이터와 정보를 다루는 프로그램을 작성할 때 문자열을 사용합니다. 예를 들어, 사용자 입력, 파일 처리, 데이터베이스 쿼리 등에서 문자열은 필수적입니다. 만약 std::string을 제대로 이해하지 못한다면, 문자열 조작에서 생기는 복잡한 문제에 부딪히게 되고, 이는 프로그램의 오류나 비효율성을 초래할 수 있습니다. 또한, C 스타일 문자열(char 배열)과 비교했을 때, std::string은 메모리 관리와 문자열 조작을 훨씬 용이하게 만들어 줍니다.
2. 핵심 개념 설명
- std::string: C++에서 제공하는 문자열을 다루기 위한 클래스입니다. 동적 메모리를 사용하여 문자열의 크기를 자동으로 관리합니다. 이는 마치 사용자가 필요에 따라 크기를 조절할 수 있는 유연한 물건과 같습니다.
- C 스타일 문자열: Null 문자('\0')로 끝나는 char 배열입니다. C++에서도 사용되지만, 메모리 관리와 안전성에서 std::string보다 불편합니다.
| 용어 | 의미 |
|---|---|
| std::string | C++ 문자열 클래스, 동적 크기 조절 가능 |
| C 스타일 문자열 | Null 문자로 끝나는 char 배열 |
3. 기본 코드 예제
아래는 std::string의 기본적인 사용법을 보여주는 코드입니다.
#include <iostream>
#include <string>
int main() {
std::string greeting = "안녕하세요!"; // 문자열 생성
std::cout << greeting << std::endl; // 문자열 출력
greeting += " 반갑습니다."; // 문자열 연결
std::cout << greeting << std::endl; // 수정된 문자열 출력
std::cout << "문자열 길이: " << greeting.length() << std::endl; // 문자열 길이 출력
return 0;
}
실행 결과:
안녕하세요!
안녕하세요! 반갑습니다.
문자열 길이: 15
std::string greeting = "안녕하세요!";: "안녕하세요!"라는 문자열을 생성하여 greeting 변수에 저장합니다.std::cout << greeting << std::endl;: greeting의 내용을 출력합니다.greeting += " 반갑습니다.";: 기존 문자열 뒤에 " 반갑습니다."를 추가하여 greeting을 수정합니다.std::cout << greeting.length() << std::endl;: greeting의 길이를 출력합니다.4. 실전 활용 예제
예제 1: 쇼핑몰 장바구니 구현
장바구니에 상품 이름을 추가하고 총 상품 수를 출력하는 예제입니다.
#include <iostream>
#include <string>
#include <vector>
int main() {
std::vector<std::string> cart; // 장바구니
cart.push_back("사과"); // 장바구니에 사과 추가
cart.push_back("바나나"); // 장바구니에 바나나 추가
std::cout << "장바구니에 담긴 상품:" << std::endl;
for (const auto& item : cart) {
std::cout << item << std::endl; // 장바구니의 상품 출력
}
std::cout << "총 상품 수: " << cart.size() << std::endl; // 상품 수 출력
return 0;
}
예제 2: 사용자 입력 처리
사용자로부터 문자열을 입력받아 출력하는 예제입니다.
#include <iostream>
#include <string>
int main() {
std::string userInput; // 사용자 입력 저장 변수
std::cout << "문자열을 입력하세요: ";
std::getline(std::cin, userInput); // 사용자 입력 받기
std::cout << "입력한 문자열: " << userInput << std::endl; // 입력한 문자열 출력
return 0;
}
5. 흔한 실수와 주의사항
1. C 스타일 문자열과 혼동
char str[] = "Hello";
std::string s = str; // C 스타일 문자열을 std::string으로 변환
const char* str = "Hello";
std::string s = std::string(str); // 명시적으로 변환
2. 문자열 길이 계산 시 주의
std::string str = "Hello";
if (str.length() = 5) { // '=' 연산자 사용
std::cout << "길이가 5입니다." << std::endl;
}
if (str.length() 5) { // '' 연산자 사용
std::cout << "길이가 5입니다." << std::endl;
}