std::basic_string<CharT,Traits,Allocator>:: c_str
|
const
CharT
*
c_str
(
)
const
;
|
(noexcept desde C++11)
(constexpr desde C++20) |
|
Devuelve un puntero a un arreglo de caracteres terminado en nulo con datos equivalentes a los 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 a los valores almacenados en la cadena con un carácter nulo adicional después de la última posición.
El puntero obtenido de
c_str()
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() , rbegin() , end() y rend() (desde C++11) .
Escribir en el arreglo de caracteres accedido a través de
c_str()
es comportamiento indefinido.
|
|
(desde C++11) |
Contenidos |
Parámetros
(ninguno)
Valor de retorno
Puntero al almacenamiento de caracteres subyacente.
|
c_str
(
)
[
i
]
==
operator
[
]
(
i
)
para todo
|
(hasta C++11) |
|
c_str
(
)
+
i
==
std::
addressof
(
operator
[
]
(
i
)
)
para todo
|
(desde C++11) |
Complejidad
Constante.
Notas
El puntero obtenido de
c_str()
solo puede tratarse como un puntero a una cadena de caracteres terminada en nulo si el objeto string no contiene otros caracteres nulos.
Ejemplo
#include <algorithm> #include <cassert> #include <cstring> #include <string> extern "C" void c_func(const char* c_str) { printf("c_func called with '%s'\n", c_str); } int main() { std::string const s("Emplary"); const char* p = s.c_str(); assert(s.size() == std::strlen(p)); assert(std::equal(s.begin(), s.end(), p)); assert(std::equal(p, p + s.size(), s.begin())); assert('\0' == *(p + s.size())); c_func(s.c_str()); }
Salida:
c_func called with 'Emplary'
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 un puntero al primer carácter de una cadena
(función miembro pública) |