Convert string to char array in C++ - GeeksforGeeks

06 Jul, 2021
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. 
CPP
// CPP program to convert string// to char array#include <iostream>#include <cstring> using namespace std; // driver codeint 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
Method 2:
CPP
// CPP program to convert string// to char array#include <iostream>#include <string> using namespace std; // driver codeint 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
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 Codeint main(){    char* char_arr;    string str_obj("GeeksForGeeks");    char_arr = &str_obj[0];    cout << char_arr;    return 0;}
GeeksForGeeks
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 codeint 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
akshaykmalik
arupjyoti_dutta
nidhi_biet
manu singhal
pujakumarinwd0039
singhbishalkumarsingh
cpp-string
C++
Strings
Strings
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Inheritance in C++
Map in C++ Standard Template Library (STL)
C++ Classes and Objects
Bitwise Operators in C/C++
Virtual Function in C++
Write a program to reverse an array or string
Reverse a string in Java
Write a program to print all permutations of a given string
C++ Data Types
Longest Common Subsequence | DP-4