2017-04-01 3 views
0

Ich habe einen wirklich einfachen Code eine Textdatei namens „Eingabe.txt“, zu erstellen und es mit ostream_iterator schreiben:Einfache Datei mit ostream_iterator Schreiben erstellt Datei, aber nicht schreiben

using namespace std; 


int main() 
{ 
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) 
    { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 

    system("PAUSE"); 
    return 0; 
} 

Den Code oben erzeugt eine "Input.txt", aber es ist nichts geschrieben. Fehle ich etwas wirklich Offensichtliches und Grundlegendes?

Antwort

1

Sie sind nicht den Strom auf die Festplatte Spülung vor system() aufrufen.

Sie können explizit flush() oder close() der Strom:

int main() { 
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 

    os.close(); 

    system("PAUSE"); 
    return 0; 
} 

Oder Sie können rund um den Strom Scoping Klammern gesetzt, so dass es eher den Gültigkeitsbereich verlässt.

int main() { 
    { 
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 
    } 

    system("PAUSE"); 
    return 0; 
} 
0

Ich fand es heraus, es war, weil ich "System (" PAUSE ") im Code hatte, den Ausgabestrom blockierend, der in die Akte geht. Dies ist der Arbeitscode:

int main() 
{ 
    ofstream os{ "Input.txt" }; // output stream for file "to" 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) 
    { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 
    return 0; 
} 

Kann nicht glauben, dass ich das verpasst ....