Terve vaan,
Joo elikkäs sellaista tässä vaan, että eikös pitäisi olla täysin mahdollista kirjoittaa vektori taulukko tiedostoon muistiin?
Eli olen nytten koittanut kirjoittaa tietoja tiedostoon seuraavasti:
//Structit
struct vertex{
float x;
float y;
float z;
};
struct triangle{
vertex VerX;
vertex VerY;
vertex VerZ;
}; vector<vertex> vecVer = model.getVerVec();
vector<triangle> vecTri = model.getTriVec();
fstream File("out.emf", ios::in | ios::out | ios::binary);
File.write((char*)&vecVer, sizeof(vecVer));
File.write((char*)&vecTri, sizeof(vecTri));
//File.write((char*)&model, sizeof(model));
File.close();...jostain syystä tieto on vain väärän laista?
Et halua kirjoittaa tiedostoon vektoria (joka sisältää lähinnä osoittimia sun muuta) vaan sen sisällön.
if (vektori.size()) {
File.write(
(const char*) &(vektori[0]), // Ensimmäisen alkion osoite
vektori.size() * sizeof(vektori[0]) // määrä * koko
);
}Lukeminen tuosta takaisin ei onnistukaan suoraan, koska mistään ei tiedetä, montako alkiota tiedostoon tallennettiin. On siis syytä tallentaa ensin myös vektorin koko.
// Kirjoitus
int koko = vektori.size();
File.write((const char *) &koko, sizeof(koko));
if (vektori.size()) {
File.write(
(const char*) &(vektori[0]),
vektori.size() * sizeof(vektori[0])
);
}
// Luku
int koko;
File.read((char *) &koko, sizeof(koko));
vektori.resize(koko); // Varataan tilaa
if (vektori.size()) {
File.read(
(char*) &(vektori[0]),
vektori.size() * sizeof(vektori[0])
);
}Aihe on jo aika vanha, joten et voi enää vastata siihen.