std::basic_string<CharT,Traits,Allocator>:: c_str
|
const
CharT
*
c_str
(
)
const
;
|
(noexcept since C++11)
(constexpr since C++20) |
|
문자열에 저장된 데이터와 동등한 데이터를 가진 널 종료 문자 배열에 대한 포인터를 반환합니다.
포인터는
[
c_str
(
)
,
c_str
(
)
+
size
(
)
]
범위가 유효하고, 그 안의 값들이 문자열에 저장된 값들과 일치하며 마지막 위치 뒤에 추가적인 널 문자가 있도록 보장합니다.
c_str()
로부터 얻은 포인터는 다음에 의해 무효화될 수 있습니다:
- 문자열에 대한 비 const 참조를 표준 라이브러리 함수에 전달하거나,
- 문자열에서 비 const 멤버 함수를 호출하는 것 (단, operator[] , at() , front() , back() , begin() , rbegin() , end() 및 rend() 는 제외) (C++11부터) .
c_str()
를 통해 접근한 문자 배열에 쓰기를 수행하는 것은
정의되지 않은 동작입니다.
|
|
(C++11 이후) |
목차 |
매개변수
(없음)
반환값
기본 문자 저장소에 대한 포인터.
|
c_str
(
)
[
i
]
==
operator
[
]
(
i
)
모든
|
(C++11 이전) |
|
c_str
(
)
+
i
==
std::
addressof
(
operator
[
]
(
i
)
)
모든
|
(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) |