Convert string to char array in C++
Many of us have encountered error ‘cannot convert std::string to char[] or char* data type’.
Examples:
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' } ;
Method 1: A way to do this is to copy the contents of the string to char array. This can be done with the help of c_str() and strcpy() function of library cstring.
The c_str() function is used to return a pointer to an array that contains a null terminated sequence of character representing the current value of the string.
Syntax:
const char* c_str() const ;
If there is an exception thrown then there are no changes in the string. But when we need to find or access the individual elements then we copy it to a char array using strcpy() function. After copying it, we can use it just like a simple array.
The length of the char array taken should not be less than the length of input string.
Implementation:
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
Time complexity: O(n)
Auxiliary Space: O(1)
Method 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
Time complexity: O(n)
Auxiliary Space: O(1)
Method 3:
This is the simplest and most efficient one. We can directly assign the address of 1st character of the string to a pointer to char. This should be the preferred method unless your logic needs a copy of the 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
Time complexity: O(n)
Auxiliary Space: O(1)
Method 4:
An alternate way of Method 1 can be such, without using strcpy() function.
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
Time complexity: O(n)
Auxiliary Space: O(1)