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; }
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; }
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; }
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; }
GeeksForGeeks
Complejidad temporal: O(n)
Espacio auxiliar: O(1)