std::string data() method
- since C++20
- since C++17
- since C++11
- until C++11
// (1) Const version
constexpr const CharT* data() const noexcept;
// (2) Non const version
constexpr CharT* data() noexcept;
// (1) Const version
const CharT* data() const noexcept;
// (1) Const version
const CharT* data() const noexcept;
// (1) Const version only
const CharT* data() const;
- since C++11
- until C++11
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 null-terminated, that is, data()
and c_str()
perform the same function.
If empty()
returns true
, the pointer points to a single null character.
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.
If empty()
returns true
, the pointer is a non-null pointer that should not be dereferenced.
- (1) Modifying the character array accessed through the const overload of data results in undefined behavior.
- (2) Modifying the past-the-end null terminator stored at
data() + size()
to any value other thanCharT()
is undefined behavior.
Parameters
(none)
Return value
A pointer to the underlying character storage.
- since C++11
- until C++11
data()[i] == operator[](i)
for every i
in [ 0, size() ).data() + i == std::addressof(operator[](i))
for every i
in [ 0, size() ].Complexity
Constant - O(1).
Notes
c_str()
and data()
perform the same function. (since C++11)
Example
#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()));
}
Hover to see the original license.