Skip to content
Related Articles

Related Articles

Improve Article

Convert string to char array in C++

  • Difficulty Level : Medium
  • Last Updated : 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 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;
}
Output
geeksforgeeks

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;
}
Output
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 Code
int main()
{
    char* char_arr;
    string str_obj("GeeksForGeeks");
    char_arr = &str_obj[0];
    cout << char_arr;
    return 0;
}
Output
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 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;
}
Output
GeeksForGeeks
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :