sehr einfach io Frage c ++

8

Ich habe gerade angefangen, C ++ zu lernen und ich bin ziemlich verrückt. Es ist eine erstaunliche Sprache, aber ich habe Probleme beim Überschreiben einer Datei

%Vor%

// wo das Problem liegt

%Vor%

Wenn ich newAnnualSalary.txt zu annualSalary.txt ändere, bekomme ich einige sehr seltsame Zahlen. Weiß jemand warum?

%Vor%

}

Ich bin mir bewusst, dass dies eine sehr geringe Frage ist, aber ich lerne nur.

    
OVERTONE 16.09.2010, 15:15
quelle

3 Antworten

9

Sie können dieselbe Datei nicht gleichzeitig als istream und ostream öffnen. Da du den iStream schon früh geschlossen hast, warum stellst du den ostream nicht einfach nach dem iStream auf? Alternativ können Sie einen fstream verwenden, der Lese- und Schreibvorgänge zulässt.

    
Niki Yoshiuchi 16.09.2010, 15:27
quelle
6

Die Stream-Klassen (naja, in diesem Fall technisch die basic_filebuf -Klasse) cachen Lese- und Schreibvorgänge in diese Datei. Die verschiedenen Dateiströme werden nicht garantiert synchronisiert.

Verwenden Sie ein einzelnes fstream anstelle von zwei separaten Streams für die Datei.

    
Billy ONeal 16.09.2010 15:25
quelle
2

Das liegt daran, dass der Standardparameter für offstream ios::out ist, der den Inhalt der Datei zerstört. Dadurch bleibt Ihr inStream-Objekt in der Jahresvariablen in Müll, weil es auf dieselbe Datei verweist, in der der Inhalt gerade zerstört wurde. Daher deine komischen Zahlen.

Lassen Sie inStream die Datei öffnen und lesen Sie den Inhalt, schließen Sie ihn, öffnen Sie dann den outStream und schreiben Sie. Dies sollte das Problem beheben, aber es wäre am besten sicherzustellen, dass während der Verarbeitung keine Probleme auftreten, bevor der Dateiinhalt geöffnet und zerstört wird. Andernfalls könnten Sie auf einen Fehler stoßen und nichts in der Datei finden. Stellen Sie grundsätzlich sicher, dass Sie gute Daten zum Schreiben haben, bevor Sie den vorherigen Inhalt löschen.

Um zu zeigen, dass das, was Sie tun, die Datei zerstört:

%Vor%     
RC. 16.09.2010 15:25
quelle

Tags und Links