비유하자면
char배열(char[ ])은 마치 우리가 어릴 대 쓰던 수동 카메라와 같다.
- 필름(메모리)을 미리 딱 정해진 칸만큼 넣어야 하고 (고정된 크기).
- 사진(문자) 한 장 한 장을 필름에 직접 손으로 붙여야 한다. (NULL 문자 \0으로 끝냄)
- 사진을 추가하거나 편집하려면, 다른 필름으로 옮기거나 새로운 사진을 추가할 때 일일이 자르고 붙이고 해야 한다.(strcpy, strcat 같은 함수 사용)
- 필름이 모자라면 큰일난다! (버퍼 오버플로우 발생 위험)
std::string은 요즘 쓰는 스마트폰 카메라와 같다.
- 사진을 얼마나 찍을지 미리 정하지 않아도 된다. (동적인 크기)
- 알아서 사진첩에 착착 저장해주고 (자동 메모리 관리)
- 사진을 추가하거나 (덧셈 + 연산), 수정하고 (멤버 함수 사용), 지우는게 엄청 편하다.
- 사진첩 용량이 모자라면 알아서 확장해준다. (메모리 자동 할당)
- 쓰기 편하고, 똑똑하고, 안전하다.
더 자세한 기술적인 차이점
특징 char 배열 (C-스타일 문자열) std::string (C++ 문자열 클래스)
| 선언 방식 | char myString[10]; (고정 길이) | string myString; or string myString = "Hello"; |
| 크기 | 고정 (선언 시 할당) | 동적 (필요에 따라 자동 확장/축소) |
| 메모리 관리 | 개발자가 직접 관리 (new, delete, ``malloc, free` 등) | 자동 관리 (클래스가 알아서 처리) |
| 널 종료 | 반드시 문자열 끝에 \0(널 문자)이 있어야 함 | 클래스 내부에서 자동으로 관리 |
| 기능 | 문자열 처리를 위해 <cstring> (C언어의 <string.h>) 라이브러리 함수(strcpy, strcat, strlen, strcmp 등) 사용 | 다양한 멤버 함수(length(), append(), find(), substr() 등) 및 연산자 오버로딩(+, =, ==, <, >) 제공 |
| 안전성 | 버퍼 오버플로우, 메모리 누수 등 오류 발생 가능성 높음 | 자동 메모리 관리로 인해 훨씬 안전 |
| 편의성 | 다소 불편하고 에러 발생 가능성이 높음 | 직관적이고 편리하며, 코드가 간결해짐 |
'C++ 공부' 카테고리의 다른 글
| 기본적인 Class 생성해보기 (0) | 2025.08.21 |
|---|---|
| C++언어 기초 - 4. 객체지향 프로그래밍 (0) | 2025.08.21 |
| C++언어 기초 - 3. Class의 개념 (0) | 2025.08.21 |
| C++언어 기초 - 2. 포인터와 레퍼런스 (0) | 2025.08.19 |
| C++언어 기초 - 1. 프로그래밍 기초 (C언어와의 차이점) (2) | 2025.08.18 |