home | help
std::basic_string::data(3)     C++ Standard Libary    std::basic_string::data(3)

NAME
     std::basic_string::data - std::basic_string::data

Synopsis
	const CharT* data() const; (1) (noexcept since C++11)
				       (constexpr since C++20)
	CharT* data() noexcept;    (2) (since C++17)
				       (constexpr since C++20)

	Returns  a pointer to the underlying array serving as character storage.
     The pointer
	is such that the range

	[data(), data() + size()) (until C++11)
	[data(), data() + size()] (since C++11)

	is valid and the values in it correspond to the  values  stored  in  the
     string.

	The returned array is not required to be null-terminated.
									       (un-
     til C++11)
	If empty() returns true, the pointer is a non-null pointer that should
	not be dereferenced.
	The returned array is null-terminated, that is, data() and c_str()
	perform the same function.
									       (since
     C++11)
	If empty() returns true, the pointer points to a single null
	character.

	The pointer obtained from data() may be invalidated by:

	  *  Passing a non-const reference to the string to any standard library
     function, or
	  * Calling non-const member functions on the string,  excluding  opera-
     tor[](), at(),
	    front(), back(), begin(), end(), rbegin(), rend().
	1)  Modifying the character array accessed through the const overload of
     data has
	undefined behavior.
	2) Modifying the past-the-end null terminator stored at data() +  size()
     to any value
	other than CharT() has undefined behavior.

Parameters
	(none)

Return value
	A pointer to the underlying character storage.

	data()[i]    ==    operator[](i)   for	 every	 i   in   [0,	size()).
     (until C++11)
	data()	+  i   ==   std::addressof(operator[](i))   for   every   i   in
     (since C++11)
	[0, size()].

Complexity
	Constant.

Example
     // Run this code

      #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()));
      }

See also
	front accesses the first character
	(DR*) (public member function)
	back  accesses the last character
	(DR*) (public member function)
	c_str returns a non-modifiable standard C character array version of the
     string
	      (public member function)
	data  returns a pointer to the first character of a view
	      (public member function of std::basic_string_view<CharT,Traits>)

http://cppreference.com 	   2024.06.10	      std::basic_string::data(3)

home | help