How to convert a char array to a string?

Converting a C++ string to a char array is pretty straightorward using the c_str function of string and then doing strcpy. However, how to do the opposite?

I have a char array like: char arr[ ] = "This is a test"; to be converted back to: string str = "This is a test.

4 Answers

The string class has a constructor that takes a NULL-terminated C-string:

char arr[ ] = "This is a test"; string str(arr); // You can also assign directly to a string. str = "This is another string"; // or str = arr; 
11

Another solution might look like this,

char arr[] = "mom"; std::cout << "hi " << std::string(arr); 

which avoids using an extra variable.

3

There is a small problem missed in top-voted answers. Namely, character array may contain 0. If we will use constructor with single parameter as pointed above we will lose some data. The possible solution is:

cout << string("123\0 123") << endl; cout << string("123\0 123", 8) << endl; 

Output is:

123
123 123

2
#include <stdio.h> #include <iostream> #include <stdlib.h> #include <string> using namespace std; int main () { char *tmp = (char *)malloc(128); int n=sprintf(tmp, "Hello from Chile."); string tmp_str = tmp; cout << *tmp << " : is a char array beginning with " <<n <<" chars long\n" << endl; cout << tmp_str << " : is a string with " <<n <<" chars long\n" << endl; free(tmp); return 0; } 

OUT:

H : is a char array beginning with 17 chars long Hello from Chile. :is a string with 17 chars long 
2

You Might Also Like