Channi Studies

[C++] c_str() 함수 본문

C++/함수 (Function)

[C++] c_str() 함수

Chan Lee 2023. 12. 23. 15:11
  string mystr = "Hello Guys!";
  const char *c_mystr = mystr.c_str();
  
  cout << c_mystr << endl; // Hello Guys!
  cout << mystr << endl;   // Hello Guys!

 

c_str()함수는 string class의 멤버 함수입니다.

c_str() 함수는 c++ style string을 c style string으로 변경하여 첫번째 문자(char)을 가리키는 포인터를 반환합니다.

 

str.c_str() 을 사용하면

해당 문자열의 첫번째 char을 가리키는 포인터를 return해줍니다.

 

여기서 중요한건 c style string은 문자의 배열이라는 점입니다.

아시다시피 배열의 특징은 배열의 이름이 해당 배열의 첫번째 원소를 나타내는 것 입니다.

 

즉, c style string에서

첫번째 char을 가리키는 포인터 호출 =  배열의 첫번째 원소 호출 = 배열 호출 = 문자열 전체 호출

인 것 입니다.

 

그렇기 때문에 'c style로 변환된 문자열을 반환한다' 고 보아도 되는 것 입니다.

사실 리턴하는것은 포인터이지 그 문자열 자체는 아니지만, 사실상 동일한 것이라고도 볼 수 있는것이죠.

 

또다른 한가지 특징은 c_str()으로 반환된 포인터는 상수에 대한 포인터(pointers to constants) 입니다.

그렇기 때문에 이후에 그 값을 변경할 수 없다는 점을 인지해야 합니다.

 

상수와 관련된 포인터의 개념은 다음 포스트에 정리되어있습니다.

 

[C++] 상수의 포인터 (Pointers to Constants)

일반적인 변수에 대한 포인터를 공부하다보면, 상수 값에 대한 포인터가 궁금해질 수 있습니다. const 키워드로 선언하는 상수는 알다시피 그 값이 선언과 초기화 이후에 변경할 수 없습니다. 그

code-studies.tistory.com