/ / C ++ Eine Datei in eine Schleife schreiben [closed] - C ++, Datei, Schleifen, Dateistream, ofstream

C ++ Schreiben einer Datei innerhalb einer Schleife [geschlossen] - C ++, Datei, Schleifen, Filestream, ofstream

Dies sollte 30 Sekunden nach unten zählenTXT-Datei. Es macht aber auch kaum den Text selbst. Was mache ich falsch? Oder ist es möglich, dass in der Schleife c ++ keine Dateibehandlung möglich ist. In der Textdatei ist einfach nichts enthalten

for (i = 30; i >= 0; i--)
{
ofstream file;
file.open("asd.txt");
file << i;
file.close();
Sleep(1000);
}

Antworten:

1 für die Antwort № 1

Bewegen Sie den Ofstream wie folgt aus der Schleife:

// ^^ There is the useless stuff
ofstream file;
for (i=0;i<maxs;i++)
{
system("cls");
secondsLeft=maxs-i;
hours=secondsLeft/3600;
secondsLeft=secondsLeft-hours*3600;
minutes=secondsLeft/60;
secondsLeft=secondsLeft-minutes*60;
seconds=secondsLeft;
cout << hours<< " : " << minutes<< " : " << seconds << " ";
file.open ("countdown.txt", ios::trunc);
file << hours << " : "  << minutes<< " : " << seconds;
file.close();
Sleep(1000);
}

2 für die Antwort № 2

Grundsätzlich erstellen Sie ein Objekt welchesstellt die Datei jedes Mal dar und Sie versuchen, sie zu öffnen. Wenn Sie jedes Mal mit einer neuen Referenz (Objekt) auf die Datei zugreifen, schreibt sie neue Daten und löscht die vorherigen Daten. Versuchen Sie das zu tun:

int main()
{
ofstream file;
file.open("test.txt");
for (int i = 30; i > 0; --i)
{
file << i << endl;
Sleep(1000);
}
file.close();


system("pause");
return 0;
}

1 für die Antwort № 3

Sie können deklarieren ofstream außerhalb der Schleife.

Wenn Sie es innerhalb der Schleife verwenden müssen, verwenden Sie den Anfügemodus.

file.open("test.txt", std::ofstream::out | std::ofstream::app);

0 für die Antwort № 4

Zuerst überschreiben Sie Ihre Ausgabedatei "asd.txt "mit jeder Schleife. Sie müssen nur einmal einen Dateizeiger für jede Sitzung erstellen und initialisieren, für die Sie IO (außerhalb der Schleife) ausführen. Dasselbe gilt für das Schließen des Dateizeigers.

ofstream file;    //Create file pointer variable
file.open("asd.txt");    //Initialize "file" to open "asd.txt" for writing
for (i = 30; i >= 0; i--)
{
file << i;   //You"ll need to add a new line if you want 1 number per line
Sleep(1000);  //Assuming this is in microseconds so sleep for 1 second
}
file.close();   //close the file pointer and flushing all pending IO operations to it.