如何将字符数组转换为string?

将C ++ string转换为char数组非常简单,使用string的c_str函数,然后执行strcpy 。 但是,如何做相反的?

我有一个char数组像: char arr[ ] = "This is a test"; 被转换回: string str = "This is a test

string类有一个构造函数,它采用NULL结尾的Cstring:

 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; 

另一个解决scheme可能是这样的,

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

避免使用额外的variables。

 #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; return 0; } 

OUT:

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

在顶级答案中错过了一个小问题。 也就是说,字符数组可能包含0.如果我们将使用具有单个参数的构造函数,如上所述,我们将丢失一些数据。 可能的解决scheme是:

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

输出是:

123
123 123

在C ++ 11中,你可以使用std::to_string("bla bla bla");