std::basic_string::c_str
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:
- Se pasa una referencia no
const
a la cadena a cualquier función de la biblioteca estándar, o; - Se llama a funciones miembro no
const
en la cadena, excluyendo a operator[], at(), front(), back(), begin(), rbegin(), end() y rend().
Escribir al array de caracteres accedido a través de c_str()
es comportamiento indefinido.
|
(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 |
(hasta C++11) |
c_str() + i == std::addressof(operator[](i)) para cada |
(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) |
(C++11) |
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) |