중간에 null 문자를 포함 할 수있는 문자열을 char 배열로 복사하려고합니다. 다음 함수를 생성했습니다.문자열을 char 배열로 복사
void SaveStringToChar(string &mystring,const char * &ArrChar)
{//begin function
std::string str;
char * writable = new char[str.size() + 1];
std::copy(str.begin(), str.end(), writable);
writable[str.size()] = '\0';
ArrChar = writable;
}//end function
내 질문에이 메서드는 null 요소 뒤에 문자를 잃지 않을 것을 보장합니다. 그리고 내 다른 질문은 내가 무슨 뜻인지 모르겠다는이 링커 오류가 있습니다.
/tmp/ccUpCRaz.o : 함수에서 :: RuleParser`파서 (숯 CONST *) '. Parser.cpp :(텍스트 0x3f6 +) : 파서 :: SaveStringToChar (STD에 정의되지 않은 참조 : basic_string, 표준 : : 할당> &, 숯불 CONST * &) ' collect2 : 신분증 1 개 종료 상태를 반환
anyhint하시기 바랍니다.
이것은 비교할 물건을 전달하는 기능입니다.
void Search(size_t TextLength, const char *Text, const vector<const char *> &patterns);
로 변경, 당신은 왜 ['표준 : : 문자열 :: c_str()'(http://www.cplusplus.com/reference/string/string/c_str를 사용하지 않는 /)? – ereOn
나는 그것들을 사용했으나 내 문자열에 중간에 null이 들어있을 수있다. 나는 그 문자열이 벡터의 데이터를 다시 검사하고 잃어버린 것을 발견했기 때문에 const char * 형식의 벡터에 푸시하여 잃어 버렸다고 생각했다. – user1231229
c_str() 함수의 결과가 첫 번째'\ 0'을 지나서 모든 문자를 포함하는 것이 확실하다면 확실하지 않습니다. 하나의 컴파일러로 테스트하더라도 동일한 방식으로 다른 컴파일러에서 작동하지 않을 수 있습니다. –