[c++] char 배열을 문자열로 변환하는 방법은 무엇입니까?

string 형 함수를 string사용하여 C ++ 를 char 배열로 변환하는 것은 매우 간단합니다 . 그러나 반대 방법은 무엇입니까?c_strstrcpy

: 내가 좋아하는 문자 배열이 가지고 char arr[ ] = "This is a test";에 변환 등을 할 :
string str = "This is a test.



답변

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;


답변

다른 해결책은 다음과 같습니다.

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

추가 변수를 사용하지 않습니다.


답변

최고 투표 답변에서 누락 된 작은 문제가 있습니다. 즉, 문자형 배열은 0을 포함 할 수 있습니다. 위에서 지적한대로 단일 매개 변수와 함께 생성자를 사용하면 일부 데이터가 손실됩니다. 가능한 해결책은 다음과 같습니다.

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

출력은 다음과 같습니다

123
123 123


답변

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

밖:

H : is a char array beginning with 17 chars long

Hello from Chile. :is a string with 17 chars long


답변