C++

C스타일 문자열과 C++스타일 문자열

monstro 2024. 2. 26. 01:57
728x90
반응형

C스타일 문자열

C스타일 문자열은 문자열의 맨 마지막에 끝을 의미하는 \0(null 문자)가 들어가게 됩니다.

따라서 실질적으로 사이즈에 + 1이 되어버립니다.

 

C스타일로 문자열을 다루는 방법은 2가지가 존재하는데, 다음과 같습니다.

 

그리고 위 두 방식은 메모리 공간을 점유하는 방식에서 차이가 나타나게 됩니다.

 

C스타일 문자열 - 포인터

 

실행 결과는  '같다'가 출력됩니다. 그 이유는 포인터를 통한 문자열메모리 공간에서 데이터 영역에 저장되어

서로 같은 주소값을 갖기 때문입니다.

 

C스타일 문자열 - 버퍼

 

실행 결과는 '다르다'가 출력됩니다. 이는 버퍼 형식의 문자열메모리 공간 중 스택 영역에 저장되어 

서로 다른 주소값을 갖게 되기 때문입니다.

 

이처럼 C스타일의 문자열은 매우 복잡하고 다루기 어렵다는 문제점이 존재합니다.

그리고 C++에서는 이를 개선하여 std::string을 제공합니다.

 

C++ 스타일 문자열

std::string

string내부적으로 문자열을 처리해주어, 설계자는 문자열을 어떻게 다루어야 하는지만 신경써주면 됩니다.

단, string은 하나의 클래스로서 매개변수등으로 넘겨줄 때&을 통해 참조로 넘겨주어야 합니다.

 

 

C스타일 문자열때와는 달리 일일이 함수를 사용하지 않고도 연산이나 추가적인 작업이 가능한 것을 볼 수 있습니다.

728x90
반응형

'C++' 카테고리의 다른 글

람다  (0) 2024.03.18
함수 객체  (0) 2024.03.11
함수 포인터  (0) 2024.03.11
멀티바이트와 유니코드  (0) 2024.02.26
algorithm 헤더 파일  (0) 2024.02.26