Witam, otóż nadal głowię się nad zapisywaniem plików w c++. Po długich męczarniach udało mi się napisać kod który odpowiednio zapisuje mi w 1 pliku część tekstową, a 2 pliku część binarną (nie potrafiłem ogarnąć binarnego zapisu stringów..). I obydwa kody się różnią, dość dziwnie dla mnie. Czy ktoś mógłby mi wytłumaczyć różnice między tymi kodami, czy po prostu wynika to z zapisu tekstowego w 1 przypadku, i binarnego w 2 przypadku ? (+pytania w komentarzach)
#pragma pack(push, 1)
struct plik2
{
std::string mob_name;
std::string mob_type;
} zapis; // 1a.czemu tu musiałem umieścić to "zapis"
#pragma pack(pop)
#pragma pack(push, 1)
struct plik
{
int mob_lv;
int mob_hp;
int mob_atk;
int mob_def;
int mob_speed;
int mob_xp;
int mob_id;
}; // 1b. a tutaj nie, czy wynika to że jedno to zapis binarny a drugi tekstowy?
#pragma pack(pop)
void zapisz(){
ofstream pliczek;
pliczek.open( "mobtxt.txt", ios::app);
cin >> zapis.mob_name;
pliczek.seekp(0,ios::end);
pliczek << zapis.mob_name;
pliczek.close();
/* ------------------------------------------------------ */
ofstream ofs("baza.dat", ios::binary);
plik* file = new plik;
cin>>file->mob_lv;
cin>>file->mob_hp;
cin>>file->mob_atk;
cin>>file->mob_def;
cin>>file->mob_speed;
cin>>file->mob_xp;
cin>>file->mob_id;
ofs.write((char*)(file), sizeof(plik));
delete file;
}
Z góry dzięki za odpowiedź wszystkim cierpliwym ludziom (wytłumaczenie w formie jakiegoś dobrego kursu na necie, gdzie to NAPRAWDĘ jest wytłumaczone też chętnie przyjmę:P)