[c++] char *를 std :: string으로 변환

에서 std::string검색 한 데이터를 저장하려면를 사용해야합니다 fgets(). 이렇게하려면 char*반환 값을에서 fgets()std::string저장하여 배열에 저장 해야합니다 . 어떻게 할 수 있습니까?



답변

std::string 이것에 대한 생성자가 있습니다 :

const char *s = "Hello, World!";
std::string str(s);

이 구문은에 문자 목록을 깊게 복사 s하고 s해서는 안됩니다 nullptr. 그렇지 않으면 동작이 정의되지 않습니다.


답변

이미 char *의 크기를 알고 있다면 이것을 대신 사용하십시오

char* data = ...;
int size = ...;
std::string myString(data, size);

strlen을 사용하지 않습니다.

편집 : 문자열 변수가 이미 있으면 assign ()을 사용하십시오.

std::string myString;
char* data = ...;
int size = ...;
myString.assign(data, size);


답변

대부분의 답변은 구성에 대한 이야기 std::string 합니다.

이미 구성된 경우 대입 연산자 만 사용하십시오 .

std::string oString;
char* pStr;

... // Here allocate and get character string (e.g. using fgets as you mentioned)

oString = pStr; // This is it! It copies contents from pStr to oString


답변

fgets ()로 검색 한 데이터를 저장하려면 std :: string을 사용해야합니다.

fgets()C ++를 프로그래밍 할 때 왜 사용 합니까? 왜 안돼 std::getline()?


답변

생성자를 통해 전달하십시오.

const char* dat = "my string!";
std::string my_string( dat );

string.c_str () 함수를 사용하여 다른 방법으로 갈 수 있습니다.

std::string my_string("testing!");
const char* dat = my_string.c_str();


답변

const char* charPointer = "Hello, World!\n";
std::string strFromChar;
strFromChar.append(charPointer);
std::cout<<strFromChar<<std::endl;


답변

char* data;
stringstream myStreamString;
myStreamString << data;
string myString = myStreamString.str();
cout << myString << endl;