C 스타일 문자열(char[], const char*)은 다음과 같은 한계가 있습니다:
문자열 비교
char name[] = "Rookiss";
char name2[] = "Rookiss";
if (name == name2) {
cout << "같음" << endl;
} else {
cout << "다름" << endl;
}
name과 name2는 문자열 내용을 비교하는 것이 아니라 주소값을 비교합니다. strcmp 함수를 사용해야 합니다. if (strcmp(name, name2) == 0) {
cout << "같음" << endl;
}불편한 문자열 조작
strcpy, strcat, strlen 등의 함수를 사용해야 합니다. char str1[50] = "Hello";
char str2[50] = "World";
strcat(str1, str2); // str1에 str2를 연결
cout << str1 << endl;메모리 관리
std::string 클래스std::string은 C++ 표준 라이브러리에서 제공하는 문자열 클래스입니다. C 스타일 문자열의 한계를 해결하며 사용하기 쉽고 효율적입니다.
std::string의 특징가변 길이 문자열
문자열 조작
편리한 접근
std::string str = "Hello";
cout << str[0] << endl; // 'H'안전한 비교
== 연산자가 오버로딩되어 문자열 내용을 비교합니다. std::string str1 = "Rookiss";
std::string str2 = "Rookiss";
if (str1 == str2) {
cout << "같음" << endl;
}null 종료 문자열 아님
std::string은 null 종료 문자열이 아니므로 중간에 '\0' 문자가 포함될 수 있습니다.표준 입출력 지원
std::cin과 std::cout을 통해 간단히 입출력할 수 있습니다.std::string 사용 예제std::string str1 = "Hello, World!";
std::string str2("Hello, World!");
std::string str3(str1); // 복사 생성자 사용
if (str1 == str2) {
cout << "문자열이 같습니다." << endl;
} else {
cout << "문자열이 다릅니다." << endl;
}
std::string str1 = "Hello";
std::string str2 = "World";
std::string combined = str1 + ", " + str2 + "!"; // 문자열 연결
cout << combined << endl;
std::string str = "Hello";
cout << "Length: " << str.length() << endl;
std::string str = "Hello, World!";
std::string sub = str.substr(0, 5); // "Hello"
cout << sub << endl;
std::string str = "Hello, World!";
auto pos = str.find("World");
if (pos != std::string::npos) {
cout << "Found at position: " << pos << endl;
} else {
cout << "Not found" << endl;
}
std::string str = "Hello, World!";
str.replace(str.find("World"), 5, "C++"); // "C++"로 교체
cout << str << endl;
std::string str = "Hello";
str.append(", World!");
cout << str << endl; // "Hello, World!"
std::string str = "Hello";
const char* cstr = str.c_str(); // C 스타일 문자열로 변환
printf("%s\n", cstr);
std::cin은 공백 이전까지만 입력받습니다. std::getline은 한 줄 전체를 입력받습니다. std::string name;
cout << "Enter your name: ";
getline(cin, name); // 공백 포함 입력받기
cout << "Hello, " << name << "!" << endl;
std::string 메서드 정리| 메서드 | 설명 |
|---|---|
length() | 문자열의 길이를 반환합니다. |
append() | 문자열의 끝에 다른 문자열을 추가합니다. |
substr(pos, len) | 부분 문자열을 반환합니다. |
find() | 특정 문자열을 찾아 위치를 반환합니다. |
replace(pos, len) | 특정 부분을 다른 문자열로 교체합니다. |
c_str() | C 스타일 문자열로 반환합니다. |
compare() | 문자열을 비교합니다. |
+, += | 문자열 결합 연산자. |