2016-08-04 17 views
2

Ich habe eine Datei, die während der Laufzeit mehrmals geöffnet sein muss. Jedes Mal, wenn Text in die Datei eingefügt wird. Hier ist der Code:Wiederverwendung der Stream-Iteratoren

ofstream fs; 
    fs.open(debugfile, fstream::app); 
    ostream_iterator<double> output(fs, " "); 
    copy(starting_point.begin(), starting_point.end(), output); 
    ... 
    fs.open(debugfile, fstream::app); 
    ostream_iterator<double> output1(fs, " "); 
    copy(starting_point.begin(), starting_point.end(), output1); 

Meine Frage ist, kann ich einen Stream-Iterator „Ausgang“ jedes Mal, wenn ich die Datei öffnen, zum Beispiel eine Art, es zu reinigen?

Dank

+7

Warum in Funktion setzen Sie den wieder verwendbaren Code nicht und die Funktion mehrmals aufrufen? – NathanOliver

+0

Das ist richtig. Ich kann so machen. – colddie

Antwort

1

können Sie den folgenden Code verwenden:

ofstream fs; 
fs.open(debugfile, fstream::app); 
ostream_iterator<double> output(fs, " "); 
copy(starting_point.begin(), starting_point.end(), output); 
... 
fs.open(debugfile, fstream::app); 
output = ostream_iterator<double>(fs, " "); 
copy(starting_point.begin(), starting_point.end(), output1); 

Hier ist die gleiche Variable output wird verwendet, um den Iterator zu speichern, aber der Iterator selbst ist von Grund auf neu und übertragen auf diese Variable erstellt operator = mit .

0

Für mich gibt es nichts zu tun (appart neu zuweisen Wert) für Ihr Problem.

nur nicht vergessen, zu schließen und Strom löschen, bevor sie wieder zu öffnen:

std::ofstream file("1"); 
// ... 
file.close(); 
file.clear(); // clear flags 
file.open("2"); 

aus: C++ can I reuse fstream to open and write multiple files?

+1

Dies beantwortet nicht die Frage nach dem Iterator. –

Verwandte Themen