Namespaces
Variants

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

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를 반환하면, 포인터는 역참조되어서는 안 되는 널이 아닌 포인터입니다.

(C++11까지)

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

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

(C++11부터)

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

  • 문자열에 대한 비-const 참조를 표준 라이브러리 함수에 전달하거나,
  • 다음을 제외한 문자열의 비-const 멤버 함수를 호출하는 경우: operator[](), at(), front(), back(), begin(), end(), rbegin(), rend().
1) 의 const 오버로드를 통해 접근한 문자 배열을 수정하면 동작이 정의되지 않습니다.data
2) 에 저장된 마지막을 지난 null 종결자를 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> )