정리

C 스타일 문자열의 핵심 한계는 “책임이 분리되어 있다”는 점입니다

배열은 공간만 제공하고, 문자열의 길이와 끝 표시는 코드가 직접 맞춰야 합니다.

C 스타일 문자열: 직접 관리

크기

배열 칸 수를 직접 정합니다.

끝 표시

'\0' 위치를 유지해야 합니다.

연산

=, == 대신 함수가 필요합니다.

위험

크기 계산이 틀리면 버퍼 오버플로우가 납니다.

std::string: 객체가 관리

크기

내용에 맞게 저장 공간을 관리합니다.

끝 표시

일반 사용자는 널 종료를 직접 다루지 않습니다.

연산

=, ==, +를 자연스럽게 씁니다.

확장

검색, 부분 문자열, 길이 확인 기능이 준비되어 있습니다.

만나는 곳

C API와 레거시 코드

기존 함수가 char* 또는 const char*를 요구할 수 있습니다.

확인할 것

배열 크기, 실제 길이, 끝 표시

세 값을 따로 확인하면 잘린 출력과 범위 초과를 줄일 수 있습니다.

넘길 때

std::string::c_str()

C 함수에 전달할 때는 포인터의 수명과 변경 가능 여부를 함께 봅니다.

마지막 기준

새 C++ 코드는 std::string을 기본으로 삼고, C 스타일 문자열은 “널 종료된 문자 배열”이라는 구조를 이해하기 위해 정확히 읽어 둡니다.