원하는 유형의 모든 유형을 가져올 수있는 배열을 시뮬레이트하는 고전적인 연결 목록을 만들었습니다. 물론 장기를 삭제하고 추가 할 수 있으며 모든 방법이 올바르게 작동합니다.링크 된 목록의 데이터를 저장하고 바이너리 파일로로드 C++
이제 바이너리 파일을 쓰고 읽는 방법을 써야하고 무엇을해야할지 모르겠다. 파일에 쓰기 위해 여러 가지 방법을 시도했으며 지금까지는 할 수 없었다. 어디서든 얻을 수 및 심지어 코드를 잘못 모르는, 내 연결리스트 코드
template <class T>
class LinkedList
{
private:
struct node
{
T data;
node * next;
};
node* head;
public:
LinkedList();
~LinkedList();
void add(T value);
int find(T value);
bool remove(T value);
void clear();
bool ifEmpty() const;
int size() const;
void display() const;
T getData(int index) const;
T &operator[](int index);
void save(ofstream& out);
};
의
그게 전부 부분을 작업
template <class T>
void LinkedList<T>::save(ofstream& out)
{
node* temp = head;
T temp2 = temp->data;
for (int i = 0; i < size(); i++)
{
out.write((const char*)(temp2), sizeof(temp2));
temp = temp->next;
temp2 = temp->data;
}
}
012 dosent 저장 방법의 코드를 먹으 렴
당신 중 일부는 내게 올바른 방법을 지시 줄 수 있는지 제발 ...
"직렬화"를 찾으십시오. 'T'가 포인터를 읽으면 포인터를 돌려주는 것이 유용하지 않습니다. – nwp
네, 내가 무슨 말을하는지 이해하지만 포인터 나 무언가를 사용하지 않도록 예외를 던질 수 있습니까? – user8093201
'T '에 포인터가 포함되어 있는지 알아내는 것은 쉽지 않습니다. 그것이 '사적인'회원이라면? 일반적으로 다양한'T'에 대해'std :: string to_string (const T & t)'와'T from_string (const std :: string & s)'함수를 씁니다. 'int'와 같은 일부 유형의 경우 사용자가 직접 정의해야하는 유형을 위해 직접 구현할 수 있습니다. [시리얼] (https://uscilab.github.io/cereal/)과 같은 도서관도보십시오. – nwp