모두의 코드
C++ 레퍼런스 - string 의 c_str 함수
작성일 : 2019-09-19
이 글은 14480 번 읽혔습니다.
c_str
const CharT* c_str() const noexcept; // C++ 11 부터
문자열 객체에 저장된 문자열들과 같은 내용을 담고 있는 널 종료 문자 배열 을 가리키는 포인터를 리턴한다.
쉽게 말해서 c_str()
부터 c_str() + size()
전 까지 우리의 문자열이 저장되어 있고, 맨 마지막 위치에는 NULL
문자가 오게 됩니다. string 객체를 널 종료 문자 배열을 받는 함수에 전달할 때 유용하게 사용할 수 있습니다.
참고로 아래와 같은 작업을 수행하면 c_str()
함수에서 리턴된 포인터가 더이상 유효하지 않습니다.
표준 라이브러리 함수에
const
가 아닌 레퍼런스를 전달했을 때const
가 아닌 멤버 함수를 호출하였을 때. 이 때operator[]
,at
,front
,back
,begin
,rbegin
,end
,rend
제외.
참고로 c_str()
이 리턴하는 배열을 수정하는 것은 정의되지 않는 작업 (undefined behavior) 입니다!
인자들
없음
리턴값
문자열 배열의 시작 주소값
실행 예제
#include <algorithm> #include <cassert> #include <cstring> #include <string> int main() { std::string const s("Emplary"); assert(s.size() == std::strlen(s.c_str())); assert(std::equal(s.begin(), s.end(), s.c_str())); assert(std::equal(s.c_str(), s.c_str() + s.size(), s.begin())); assert(0 == *(s.c_str() + s.size())); }
실행 결과
참고 자료
front
: 첫 번째 문자를 얻는다.back
: 마지막 문자를 얻는다.data
: 첫 번째 문자를 가리키는 포인터를 얻는다. (C++ 11 부터 c_str 과data
는 같은 역할을 한다.)
첫
댓글을 달아주세요!
강좌에 관련 없이 궁금한 내용은
여기를 사용해주세요
또는 직접 입력하세요 (댓글 수정시 비밀번호가 필요합니다)
댓글을 불러오는 중입니다..