使用字符串的string
函数然后执行c_str
,将C ++ strcpy
转换为char数组非常简单。但是,如何做到相反呢?
我有一个char数组,如:char arr[ ] = "This is a test";
要转换回:
string str = "This is a test
。
答案 0 :(得分:339)
string
类有一个构造函数,它接受以NULL结尾的C字符串:
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;
答案 1 :(得分:53)
另一种解决方案可能如下所示,
char arr[] = "mom";
std::cout << "hi " << std::string(arr);
避免使用额外的变量。
答案 2 :(得分:25)
在最高投票的答案中遗漏了一个小问题。也就是说,字符数组可能包含0.如果我们将使用带有单个参数的构造函数,如上所述,我们将丢失一些数据。可能的解决方案是:
cout << string("123\0 123") << endl;
cout << string("123\0 123", 8) << endl;
输出是:
123
123 123
答案 3 :(得分:10)
#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