C++ 초급 - 6. 배열과 문자열 (5 - std::string (C++ 표준 문자열))
2025. 2. 22. 13:47ㆍ프로그래밍 언어/C++
📌 6.5 std::string (C++ 표준 문자열)
C++의 std::string 클래스는 C-스타일 문자열(char[])의 단점을 개선한 문자열 처리 클래스이다.
C++ 표준 라이브러리 <string> 헤더를 포함하면 사용할 수 있으며,
자동 메모리 관리, 편리한 문자열 조작 기능 제공, 안전한 크기 조절 등의 장점이 있다.
std::string은 C++에서 기본적인 문자열 처리를 할 때 권장되는 방식이며,
문자열 비교, 연결, 검색, 부분 문자열 추출 등의 다양한 기능을 제공한다.
📌 1. std::string 선언 및 초기화
🔹 (1) std::string 선언 방식
💡 기본 문법
#include <string>
std::string 문자열이름 = "문자열";
💡 예제: std::string 선언 및 초기화
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello"; // 직접 초기화
std::string str2("World"); // 생성자 방식 초기화
std::string str3; // 빈 문자열 선언
std::cout << "str1: " << str1 << std::endl;
std::cout << "str2: " << str2 << std::endl;
std::cout << "str3(초기값 없음): " << str3 << std::endl;
return 0;
}
🔹 출력 결과
str1: Hello
str2: World
str3(초기값 없음):
💡 설명
- std::string str1 = "Hello"; → 문자열을 직접 초기화.
- std::string str2("World"); → 생성자 방식으로 초기화.
- std::string str3; → 빈 문자열 선언.
📌 2. 문자열 입력 (std::getline)
std::cin을 사용하면 공백 이전까지만 입력되므로,
공백을 포함하는 문자열을 입력받을 때 std::getline()을 사용한다.
💡 예제: std::getline()을 이용한 문자열 입력
#include <iostream>
#include <string>
int main() {
std::string name;
std::cout << "이름을 입력하세요: ";
std::getline(std::cin, name); // 공백 포함 입력 가능
std::cout << "입력한 이름: " << name << std::endl;
return 0;
}
🔹 입력 예시
이름을 입력하세요: Alice Wonderland
입력한 이름: Alice Wonderland
💡 설명
- std::getline(std::cin, name); → 공백 포함 문자열 입력 가능.
⚠ 주의:
- std::cin 입력 후 std::getline()을 사용할 때 입력 버퍼 문제를 방지하려면 std::cin.ignore()를 추가해야 한다.
📌 3. 문자열 길이 (length())
문자열 길이는 length() 또는 size() 메서드를 사용하여 확인 가능하다.
💡 예제: length() 사용
#include <iostream>
#include <string>
int main() {
std::string text = "Hello, C++!";
std::cout << "문자열 길이: " << text.length() << std::endl;
std::cout << "문자열 크기: " << text.size() << std::endl;
return 0;
}
🔹 출력 결과
문자열 길이: 11
문자열 크기: 11
💡 설명
- length()와 size()는 동일한 기능을 수행한다.
📌 4. 문자열 추가 (append(), +=)
🔹 (1) append(): 문자열을 추가
💡 예제: append() 사용
#include <iostream>
#include <string>
int main() {
std::string str = "Hello";
str.append(", World!");
std::cout << "추가된 문자열: " << str << std::endl;
return 0;
}
🔹 출력 결과
추가된 문자열: Hello, World!
🔹 (2) += 연산자 사용
💡 예제: += 연산자로 문자열 추가
#include <iostream>
#include <string>
int main() {
std::string str = "C++";
str += " Programming";
std::cout << "결과 문자열: " << str << std::endl;
return 0;
}
🔹 출력 결과
결과 문자열: C++ Programming
💡 설명
- append()와 +=는 동일한 기능을 하지만, +=가 더 간결한 코드 작성에 유용.
📌 5. 문자열 비교 (==, !=, compare())
🔹 (1) == 연산자를 사용한 비교
💡 예제: ==, != 연산자 사용
#include <iostream>
#include <string>
int main() {
std::string str1 = "apple";
std::string str2 = "banana";
if (str1 == str2) {
std::cout << "두 문자열이 같습니다." << std::endl;
} else {
std::cout << "두 문자열이 다릅니다." << std::endl;
}
return 0;
}
🔹 출력 결과
두 문자열이 다릅니다.
🔹 (2) compare() 함수 사용
💡 예제: compare()를 사용한 비교
#include <iostream>
#include <string>
int main() {
std::string str1 = "apple";
std::string str2 = "banana";
if (str1.compare(str2) == 0) {
std::cout << "두 문자열이 같습니다." << std::endl;
} else {
std::cout << "두 문자열이 다릅니다." << std::endl;
}
return 0;
}
🔹 출력 결과
두 문자열이 다릅니다.
💡 설명
- compare()는 동일하면 0, 사전 순으로 작으면 -1, 크면 1 반환.
📌 6. 부분 문자열 (substr()) 및 검색 (find())
🔹 (1) substr(): 부분 문자열 추출
💡 예제: substr() 사용
#include <iostream>
#include <string>
int main() {
std::string text = "Hello, World!";
std::string sub = text.substr(7, 5); // 7번째 위치부터 5글자 추출
std::cout << "부분 문자열: " << sub << std::endl;
return 0;
}
🔹 출력 결과
부분 문자열: World
🔹 (2) find(): 특정 문자열 검색
💡 예제: find() 사용
#include <iostream>
#include <string>
int main() {
std::string text = "C++ programming";
size_t pos = text.find("program");
if (pos != std::string::npos) {
std::cout << "'program'은 " << pos << "번째 위치에서 발견되었습니다." << std::endl;
}
return 0;
}
🔹 출력 결과
'program'은 4번째 위치에서 발견되었습니다.
📌 7. 정리
개념 | 설명 |
문자열 선언 | std::string str = "Hello"; |
문자열 입력 | std::getline(std::cin, str); |
문자열 길이 | str.length(); |
문자열 추가 | str.append(" World!"); 또는 str += " World!"; |
문자열 비교 | ==, !=, compare() |
부분 문자열 추출 | substr(시작, 길이); |
문자열 검색 | find("문자열"); |
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 초급 - 7. 구조체와 클래스 (2 - 클래스 (class vs struct)) (0) | 2025.02.22 |
---|---|
C++ 초급 - 7. 구조체와 클래스 (1 - 구조체 (struct)) (0) | 2025.02.22 |
C++ 초급 - 6. 배열과 문자열 (4 - C-스타일 문자열 (char str[])) (0) | 2025.02.22 |
C++ 초급 - 6. 배열과 문자열 (3 - std::vector) (0) | 2025.02.22 |
C++ 초급 - 6. 배열과 문자열 (2 - 다차원 배열 (int matrix[3][3];)) (0) | 2025.02.22 |