파일에 저장해야하는 두 가지 구조체가 있습니다. 구조체를 파싱하지 않고 텍스트 파일로 쓰지 않고도 파일로 가져올 수있는 좋은 방법을 찾을 수 없습니다. 이는 내가 원하는 것보다 훨씬 효율적이지 않습니다. 무엇이 가장 원시적 인 구조체를 파일로 가져 오는 가장 간단한 방법은 무엇입니까? 구조체가 아래에 있습니다쉽게 다시로드 할 수 있도록 구조체를 파일에 저장하는 방법은 무엇입니까?
구조체를 파일에 쓰려고 시도했지만 아주 잘 작동하지 않습니다. 실행 후 파일 크기는 4.7kb에 불과하지만 그보다 훨씬 커야합니다.
sector s;
object o;
s.id = 1;
s.neighbors = {2, 3, 4, 5};
o.id = 1; o.x = 2.0f; o.y = 3.0f; o.type = 4; o.flags = 6;
for(int i = 0; i < 65536; i++)
{
s.objects.push_back(o);
o.id += 1; o.x += 1.0f; o.y += 1.0f; o.type += 1; o.flags += 1;
}
ofstream os("world.dat", ios::binary|ios::out);
s.objects.resize(s.objects.size());
int size = s.objects.size() * sizeof(object);
os.write((char*)&size, sizeof(int));
os.write((char*)&s, size);
os.close();
의견이 있으십니까?
메모리를 디스크에 직접 저장하는 출력을 시도 했습니까? 예를 들어'memcpy'를'& o'에서'byte' 배열로 바꾼 후 디스크에 이진 데이터로 저장합니다 – Itsik
4.7kb라면? 그것이 유효한지보기 위해 디스크에서 다시 읽으려고 했습니까? 그렇다면 설정되어 있습니다. –
@Itsik은 기본적으로 메모리에있는 diff 위치로 데이터를 복사하지 않고 그가하고있는 것입니다. –