estándar::string::datos() en C++

La función data() escribe los caracteres de la string en una array. Devuelve un puntero a la array, obtenido de la conversión de string a la array. Su tipo de retorno no es una string C válida ya que no se agrega ningún carácter ‘\0’ al final de la array.
Sintaxis:

const char* data() const;
char* is the pointer to the obtained array.
Parameters : None
  • std::string::data() devuelve una array que pertenece a la string. Por lo tanto, la persona que llama no debe modificar o liberar la memoria.
    Tomemos el mismo ejemplo donde ptr apunta a la array final.
    ptr[2] = 'a';
    this will raise an error as ptr points to an array that
    is owned by the string, in other words ptr is now pointing
    to constant array and assigning it a new value is now not allowed.
    
  • El valor de retorno de data() es válido solo hasta la próxima llamada de una función miembro no constante para la misma string.
    Explicación:
    supongamos que str sea la string original que se requiere convertir en una array
    // converts str in an array pointed by pointer ptr.
    const char* ptr = str.data(); 
    
    // Bad access of str after modification
    // of original string to an array
    str += "hello"; // invalidates ptr
    
    // Now displaying str with reference of ptr
    // will give garbage value
    cout << ptr; // Will give garbage value
    
// CPP code to illustrate
// std::string::data()
   
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
   
// Function to demonstrate data() 
void dataDemo(string str1)
{
    // Converts str1 to str2 without appending
    // '/0' at the end
    const char* str2;
    str2 = str1.data();
      
    cout << "Content of transformed string : ";
    cout << str2 << endl;
   
    cout << "After data(), length: ";
    cout << strlen(str2);
      
      
}
          
// Driver code
int main()
{
    string str("GeeksforGeeks");
   
    cout << "Content of Original String : ";
    cout << str << endl;
    cout << "Length of original String : ";
    cout << str.size() << endl;
     
    dataDemo(str);
   
    return 0;
}

Producción:

Content of Original String : GeeksforGeeks
Length of original String : 13
Content of transformed string : GeeksforGeeks
After data(), length: 13

Aquí, podemos notar fácilmente que tanto el contenido como la longitud de la string original y la array transformada son iguales.
Este artículo es una contribución de Sakshi Tiwari . Si le gusta GeeksforGeeks (¡sabemos que le gusta!) y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *