/ / fstream non crea un nuovo file - c ++, file-io, fstream

fstream non crea nuovo file - c ++, file-io, fstream

Sto cercando di imparare l'accesso dinamico ai file. Il mio codice è il seguente:

int main()
{
dtbrec xrec; // class object
fstream flh;

// Doesn"t create a new file unless ios::trunc is also given.
flh.open("database.txt", ios::in | ios::out | ios::binary);

flh.seekp(0,ios::end);
xrec.getdata();
flh.write((char*)&xrec, sizeof(dtbrec));

flh.close();
}

Pensavo che fstream per impostazione predefinita crea un nuovo file "database.txt" se non esiste. Qualche idea su cosa potrebbe essere sbagliato?

risposte:

9 per risposta № 1

Alcuni suggerimenti su fstream:

un. Se si utilizza una barra rovesciata per specificare la directory come quando si utilizza fstream f;

f.open ("folderfile", ios :: out);

non funzionerà, una barra rovesciata deve essere preceduta da una barra rovesciata, quindi il modo corretto sarebbe:

f.open ("cartella \ file", ios :: out);

b. Se vuoi creare un nuovo file, questo non funzionerà:

f.open ("file.txt", ios :: in | ios :: out | ios :: binary);

il modo corretto sarebbe quello di creare prima il file, usando ios :: out o ios :: trunc

f.open ("file.txt". ios :: out) o f.open ("file.txt", ios :: trunc);

e poi

f.open ("file.txt", ios :: in | ios :: out | ios :: binary);

c. Infine, potrebbe essere in questo ordine come specificato in questa risposta, fstream non crea file

Fondamentalmente iOS :: in richiede di avere già un file esistente.


1 per risposta № 2

Prova a usare ofstream, crea automaticamente un file, se non esiste già. Oppure, se si desidera eseguire sia l'input che l'output sullo stream, provare a utilizzare fstream, ma non è necessario specificare ios::in|ios::out|ios::binary, perché fstream lo imposta automaticamente per te.