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