Convierta una string en una array de caracteres en C++

Muchos de nosotros hemos encontrado el error ‘cannot convert std::string to char[] or char* data type’

Ejemplos: 

Input : string s = "geeksforgeeks" ;
Output : char s[] = { 'g', 'e', 'e', 'k', 's', 'f', 'o',
                     'r', 'g', 'e', 'e', 'k', 's' } ;
Input : string s = "coding" ;
Output : char s[] = { 'c', 'o', 'd', 'i', 'n', 'g' } ;

Método 1: una forma de hacerlo es copiar el contenido de la string en la array de caracteres. Esto se puede hacer con la ayuda de la función c_str() y strcpy() de la biblioteca cstring. 
La función c_str() se utiliza para devolver un puntero a una array que contiene una secuencia de caracteres terminada en nulo que representa el valor actual de la string.

Sintaxis: 

const char* c_str() const ;

Si se lanza una excepción, no hay cambios en la string. Pero cuando necesitamos encontrar o acceder a los elementos individuales, lo copiamos en una array de caracteres usando la función strcpy(). Después de copiarlo, podemos usarlo como una array simple. 
La longitud de la array de caracteres tomada no debe ser menor que la longitud de la string de entrada. 

Implementación:

CPP

// CPP program to convert string
// to char array
#include <iostream>
#include <cstring>
 
using namespace std;
 
// driver code
int main()
{
    // assigning value to string s
    string s = "geeksforgeeks";
 
    int n = s.length();
 
    // declaring character array
    char char_array[n + 1];
 
    // copying the contents of the
    // string to char array
    strcpy(char_array, s.c_str());
 
    for (int i = 0; i < n; i++)
        cout << char_array[i];
 
    return 0;
}
Producción

geeksforgeeks

Complejidad temporal: O(n)
Espacio auxiliar: O(1)

Método 2:

CPP

// CPP program to convert string
// to char array
#include <iostream>
#include <string>
 
using namespace std;
 
// driver code
int main()
{
    // assigning value to string s
    string s("geeksforgeeks");
    // declaring character array : p
    char p[s.length()];
 
    int i;
    for (i = 0; i < sizeof(p); i++) {
        p[i] = s[i];
        cout << p[i];
    }
    return 0;
}
Producción

geeksforgeeks

Complejidad temporal: O(n)
Espacio auxiliar: O(1)

Método 3:

Este es el más simple y eficiente. Podemos asignar directamente la dirección del primer carácter de la string a un puntero a char . Este debería ser el método preferido a menos que su lógica necesite una copia de la string.  

C++14

// CPP program for the above approach
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
 
// Driver Code
int main()
{
    char* char_arr;
    string str_obj("GeeksForGeeks");
    char_arr = &str_obj[0];
    cout << char_arr;
    return 0;
}
Producción

GeeksForGeeks

Complejidad temporal: O(n)
Espacio auxiliar: O(1)

Método 4:

Una forma alternativa del Método 1 puede ser tal, sin usar la función strcpy().

C++14

// CPP program to convert string
// to char array
#include <iostream>
#include <cstring>
 
using namespace std;
 
// driver code
int main()
{
    // assigning value to string s
    string st = "GeeksForGeeks";
    //the c_str() function returns a const pointer
    //to null terminated contents.
    const char *str = st.c_str();
    //printing the char array
    cout << str;
    return 0;
}
Producción

GeeksForGeeks

Complejidad temporal: O(n)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por mohitw16 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 *