Namespaces
Variants

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

De es.cppreference.net
 
 
 
std::basic_string
 
const CharT* data() const;
(1) (noexcept desde C++11)
(constexpr desde C++20)
CharT* data() noexcept;
(2) (desde C++17)
(constexpr desde C++20)

Devuelve un puntero al arreglo subyacente que sirve como almacenamiento de caracteres. El puntero es tal que el rango

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

(hasta C++11)

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

(desde C++11)

es válido y los valores en él corresponden a los valores almacenados en la cadena.

No se requiere que el arreglo devuelto termine en nulo.

Si empty() devuelve true, el puntero es un puntero no nulo que no debe ser desreferenciado.

(hasta C++11)

El arreglo devuelto termina en nulo, es decir, data() y c_str() realizan la misma función.

Si empty() devuelve true, el puntero apunta a un solo carácter nulo.

(desde C++11)

El puntero obtenido de data() puede ser invalidado por:

  • Pasar una referencia no constante a la cadena a cualquier función de la biblioteca estándar, o
  • Llamar a funciones miembro no constantes en la cadena, excluyendo operator[](), at(), front(), back(), begin(), end(), rbegin(), rend().
1) Modificar el arreglo de caracteres accedido a través de la sobrecarga constante de data tiene comportamiento indefinido.
2) Modificar el terminador nulo pasado el final almacenado en data() + size() a cualquier valor distinto de CharT() tiene comportamiento indefinido.

Parámetros

(ninguno)

Valor de retorno

Un puntero al almacenamiento de caracteres subyacente.

data ( ) [ i ] == operator [ ] ( i ) para todo i en [ ​ 0 ​ , size ( ) ) .

(hasta C++11)

data ( ) + i == std:: addressof ( operator [ ] ( i ) ) para todo i en [ ​ 0 ​ , size ( ) ] .

(desde C++11)

Complejidad

Constante.

Ejemplo

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

Véase también

( DR* )
accede al primer carácter
(función miembro pública)
( DR* )
accede al último carácter
(función miembro pública)
devuelve una versión no modificable en formato de arreglo de caracteres C estándar de la cadena
(función miembro pública)
devuelve un puntero al primer carácter de una vista
(función miembro pública de std::basic_string_view<CharT,Traits> )