Namespaces
Variants

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

From cppreference.net
std::basic_string
const CharT * data ( ) const ;
(1) (C++11부터 noexcept)
(C++20부터 constexpr)
CharT * data ( ) noexcept ;
(2) (C++17부터)
(C++20부터 constexpr)

문자 저장소 역할을 하는 기반 배열에 대한 포인터를 반환합니다. 이 포인터는 범위

[ data ( ) , data ( ) + size ( ) )

(C++11 이전)

[ data ( ) , data ( ) + size ( ) ]

(C++11 이후)

유효하며 그 안의 값들이 문자열에 저장된 값들과 일치합니다.

반환된 배열은 null로 종료될 필요가 없습니다.

만약 empty() true 를 반환하면, 해당 포인터는 역참조되어서는 안 되는 null이 아닌 포인터입니다.

(until C++11)

반환된 배열은 null로 종료됩니다. 즉, data() c_str() 은 동일한 기능을 수행합니다.

만약 empty() true 를 반환하면, 포인터는 단일 null 문자를 가리킵니다.

(since C++11)

data() 로부터 얻은 포인터는 다음과 같은 경우 무효화될 수 있습니다:

1) const 오버로드의 data 를 통해 접근된 문자 배열을 수정하는 것은 정의되지 않은 동작입니다.
2) data() + size() 에 저장된 끝을 지나는 널 종결자를 CharT() 이외의 값으로 수정하는 것은 정의되지 않은 동작을 유발합니다.

목차

매개변수

(없음)

반환값

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

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

(C++11 이전)

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

(C++11 이후)

복잡도

상수.

예제

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
int main()
{
    std::string const s("Emplary");
    assert(s.size() == std::strlen(s.data()));
    assert(std::equal(s.begin(), s.end(), s.data()));
    assert(std::equal(s.data(), s.data() + s.size(), s.begin()));
    assert('\0' == *(s.data() + s.size()));
}

참고 항목

( DR* )
첫 번째 문자에 접근
(public member function)
( DR* )
마지막 문자에 접근
(public member function)
문자열의 수정 불가능한 표준 C 문자 배열 버전을 반환
(public member function)
뷰의 첫 번째 문자에 대한 포인터를 반환
(public member function of std::basic_string_view<CharT,Traits> )