Espacios de nombres
Variantes
Acciones

std::basic_string::c_str

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
const CharT* c_str() const;
(hasta C++11)
const CharT* c_str() const noexcept;
(desde C++11)
(hasta C++20)
constexpr const CharT* c_str() const noexcept;
(desde C++20)

Devuelve un puntero a un array de caracteres terminado en nulo con datos equivalentes a aquellos almacenados en la cadena.

El puntero es tal que el rango [c_str(); c_str() + size()] es válido y los valores en él corresponden con los valores almacenados en la cadena con el carácter nulo adicional después de la última posición.

El puntero devuelto por c_str() puede invalidarse si:

Escribir al array de caracteres accedido a través de c_str() es comportamiento indefinido.

c_str() y data() realizan la misma función.

(desde C++11)

Contenido

[editar] Parámetros

(Ninguno)

[editar] Valor de retorno

Un puntero al almacenamiento de caracteres subyacente.

c_str()[i] == operator[](i) para cada i en [0, size()).

(hasta C++11)

c_str() + i == std::addressof(operator[](i)) para cada i en [0, size()].

(desde C++11)

[editar] Complejidad

Constante.

[editar] Notas

El puntero obtenido de c_str() puede tratarse solamente como un puntero a una cadena de caracteres terminada en nulo si el objeto de la cadena no contiene otros caracteres nulos.

[editar] Ejemplo

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
 
int main()
{
  std::string const s("Emplar");
  assert(s.size() == std::strlen(s.c_str()));
  assert(std::equal(s.begin(), s.end(), s.c_str()));
  assert(std::equal(s.c_str(), s.c_str() + s.size(), s.begin()));
  assert(0 == *(s.c_str() + s.size()));
}


[editar] Véase también

(C++11)
Accede al primer carácter
(función miembro pública) [editar]
(C++11)
Accede al último carácter
(función miembro pública) [editar]
Devuelve un puntero al primer carácter de una cadena
(función miembro pública) [editar]