string 클래스
문자열을 저장하는 데 문자 배열을 사용하는 대신에 string형 변수(객체)를 사용할 수 있다.
(🔹문자 배열 : char chr[20];)
문자 배열보다 사용하기 쉽고 문자열을 하나의 데이터형으로 나타내는 표현을 제공한다.
문자열의 배열 성질을 보이지 않게 감춤으로써, 문자열을 보통의 변수처럼 취급할 수 있게 한다.
💡 string 객체와 문자 배열의 차이점
➡️ string 객체를 배열이 아니라 단순한 변수로 선언하는 것
사용법
1
|
#include <string>
|
cs |
⚠️ string 헤더 파일을 포함시켜야 한다 ⚠️
⚠️ std 이름 공간에 속해 있어서, using 지시자를 사용하거나 (using namespace std;) std::string을 사용하여 클래스를 참조해줘야 한다 ⚠️
특징
- C 스타일 문자열로 string 객체를 초기화할 수 있다
- cin을 사용하여 string 객체에 키보드 입력을 저장할 수 있다
- cout을 사용하여 stirng 객체를 디스플레이할 수 있다
- 배열 표기를 사용하여 string 객체에 저장되어 있는 개별적인 문자들에 접근할 수 있다
- 문자 배열을 사용하는 것보다 편리하고 안전하다
- 문자 배열보다 조작이 간단하다 (하나의 배열을 다른 배열에 간단하게 대입할 수 없지만, 하나의 string 객체를 다른 string 객체에 간단하게 대입할 수 있음)
문자열 초기화 (C++ 11)
문자열과 문자열 객체에 리스트 초기화를 가능하게 해 준다.
1
2
3
4
|
char my_study [] = {"Cpp study"};
char play_list [] = {"Summer Peach"};
string code_program [] = {"VS code"};
string cpp_ref_book [] = {"cpp plus"};
|
cs |
대입, 결합, 추가
+ 연산자를 사용하여 두 개의 string 객체를 하나로 결합할 수 있고, += 연산자를 사용하여 기존의 string 객체의 끝에 또 다른 string 객체를 덧붙일 수 있다.
1
2
3
4
5
6
7
8
9
10
|
char charr1[20]; // 빈 배열 생성
char charr2[20] = "summer"; // 초기화된 배열을 생성
string str1;
string str2 = "winter"; // 빈 string 객체 생성
charr1 = charr2; // 안 됨, 배열 대입 NO
str1 = str2; // 가능, 객체 대입 OK
string str3;
str3 = str1 + str2; // 결합된 두 string 객체를 str3에 대입
str1 += str2; // str1의 끝에 str2를
|
cs |
string 클래스의 조작
✏️ C라이브러리에 있는 함수
strcpy(char1, char2); ➡️char2를 char1에 복사한다.
strcat(char1, char2); ➡️char2의 내용을 char1에 추가한다.
string 객체에 사용되는 테크닉 vs 문자 배열에 사용되는 테크닉
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <iostream>
#include <string>
#include <cstring> // C스타일 문자열 라이브러리
using namespace std;
int main()
{
char charr1[20];
char charr2[20] = "summer";
string str1;
string str2 = "winter";
// string 객체의 대입과 문자 배열의 대입
str1 = str2; // str2를 str1에 복사
strcpy(charr1, charr2); // charr2를 charr1에 복사
// string 객체의 추가와 문자 배열의 추가
str1 += "IsTooHot"; // str1의 끝에 IsTooHoot 추가
strcat(charr1, "IsTooCold"); // charr1의 끝에 IsTooCold 추가
// string 객체의 길이 구하기와 C스타일 문자열의 길이 구하기
int len1 = str1.size(); // str1의 길이 구하기
int len2 = strlen(charr1); // charr1의 길이 구하기
cout << str1 << " 문자열에는 " << len1 << "개의 문자가 들어가 있다.\n";
cout << charr1 << " 문자열에는 " << len2 << "개의 문자가 들어가 있다.\n";
return 0;
}
|
cs |
✅ 코드 분석 ✅
➡️ 23 Line C스타일 문자열을 매개변수로 사용하고 그 문자열에 들어있는 문자들의 개수를 리턴한다.
➡️ 22 Line str1이 함수의 매개변수로 나타나지 않고, 함수 이름 앞에 오고, 함수 이름과 도트(.)로 연결된다. str1이 객체를 나타내고, size()가 클래스 메서드라는 것을 나타낸다. 메서드는 그 메서드와 같은 클래스에 속한 객체에 의해서만 노출될 수 있는 함수이다. str1은 string 객체이고, size()는 string 메서드이다.
💡 C 함수들은 매개변수를 사용하여 어느 문자열을 사용할 것인지를 나타낸다.
💡 C++ string 클래스 객체는 객체 이름과 도트 연산자들 사용하여 어느 문자열을 사용할 것인지를 나타낸다.
출처 및 참고 : C++ 기초 플러스
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)