에서 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;