Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>:: c_str

From cppreference.net
std::basic_string
const CharT * c_str ( ) const ;
(noexcept since C++11)
(constexpr since C++20)

문자열에 저장된 데이터와 동등한 데이터를 가진 널 종료 문자 배열에 대한 포인터를 반환합니다.

포인터는 [ c_str ( ) , c_str ( ) + size ( ) ] 범위가 유효하고, 그 안의 값들이 문자열에 저장된 값들과 일치하며 마지막 위치 뒤에 추가적인 널 문자가 있도록 보장합니다.

c_str() 로부터 얻은 포인터는 다음에 의해 무효화될 수 있습니다:

c_str() 를 통해 접근한 문자 배열에 쓰기를 수행하는 것은 정의되지 않은 동작입니다.

c_str() data() 는 동일한 기능을 수행합니다.

(C++11 이후)

목차

매개변수

(없음)

반환값

기본 문자 저장소에 대한 포인터.

c_str ( ) [ i ] == operator [ ] ( i ) 모든 i 에 대해 [ 0 , size ( ) ) 범위에서 성립합니다.

(C++11 이전)

c_str ( ) + i == std:: addressof ( operator [ ] ( i ) ) 모든 i 에 대해 [ 0 , size ( ) ] 범위에서 성립합니다.

(C++11 이후)

복잡도

상수.

참고 사항

c_str() 에서 얻은 포인터는 문자열 객체에 다른 널 문자가 포함되어 있지 않은 경우에만 널 종료 문자열에 대한 포인터로 취급될 수 있습니다.

예제

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
extern "C" void c_func(const char* c_str)
{
    printf("c_func called with '%s'\n", c_str);
}
int main()
{
    std::string const s("Emplary");
    const char* p = s.c_str();
    assert(s.size() == std::strlen(p));
    assert(std::equal(s.begin(), s.end(), p));
    assert(std::equal(p, p + s.size(), s.begin()));
    assert('\0' == *(p + s.size()));
    c_func(s.c_str());
}

출력:

c_func called with 'Emplary'

참고 항목

( DR* )
첫 번째 문자에 접근
(public member function)
( DR* )
마지막 문자에 접근
(public member function)
문자열의 첫 번째 문자에 대한 포인터를 반환
(public member function)