如何将char数组转换为字符串?

时间:2012-01-22 09:09:09

标签: c++ string char arrays

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

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

4 个答案:

答案 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