std::basic_string<CharT,Traits,Allocator>::data (3) - Linux Man Pages
const CharT* data() const; (until C++11)
const CharT* data() const noexcept; (1) (since C++11)
CharT* data() noexcept; (2) (since C++17)
Returns a pointer to the underlying array serving as character storage. The pointer is such that the range [data(); data() + size()) 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. (until 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 operator(), 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.
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 [0, size()]. (since C++11)
// Run this code
front accesses the first character
back accesses the last character
c_str (public member function)