/ / fstream erstellt keine neue Datei - c ++, file-io, fstream

fstream erstellt keine neue Datei - c ++, file-io, fstream

Ich versuche den dynamischen Dateizugriff zu lernen. Mein Code ist wie folgt:

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();
}

Ich dachte, dass fstream erstellt standardmäßig eine neue Datei "database.txt", wenn sie nicht existiert. Irgendwelche Ideen, was könnte falsch sein?

Antworten:

9 für die Antwort № 1

Einige Hinweise zu fstream:

ein. Wenn Sie einen umgekehrten Schrägstrich verwenden, um das Verzeichnis anzugeben, z. B. bei der Verwendung fstream f;

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

es wird nicht funktionieren, einem Backslash muss ein Backslash vorangestellt werden, also wäre der richtige Weg:

f.open ("Ordner \ Datei", ios :: out);

b. Wenn Sie eine neue Datei erstellen möchten, funktioniert das nicht:

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

Der richtige Weg wäre, zuerst die Datei entweder mit ios :: out oder ios :: trunc zu erstellen

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

und dann

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

c. Schließlich könnte es in dieser Reihenfolge sein, wie in dieser Antwort angegeben, fstream erstellt keine Datei

Grundsätzlich benötigt ios :: in bereits eine existierende Datei.


1 für die Antwort № 2

Versuchen Sie es mit ofstreamerstellt es automatisch eine Datei, wenn sie nicht bereits existiert. Oder wenn Sie sowohl Eingabe als auch Ausgabe im Stream durchführen möchten, versuchen Sie es mit fstream, aber Sie müssen nicht angeben ios::in|ios::out|ios::binary, weil fstream stellt es automatisch für Sie bereit.