Mehrere Werte einer Variable in Datei schreiben
-
Guten Abend, ich habe ein kleines Problem bei meinem Programm, wenn man es jetzt ausführt pingt er die eingegebene IP an und schreibt sie in eine Datei, wenn man allerdings eine neue IP eingibt wird die alte nur ersetzt.
Ich möchte dass genau dies nicht passiert hat jemand Lösungsvorschläge?
Die Datei soll sich erst leeren wenn das Programm geschlossen wird.Freue mich auf Kritik und Ratschläge
Mfg, Choco.#include <iostream> #include <windows.h> #include <string> #include <fstream> using namespace std; string ip; bool Active; void Function() { Active = false; system("color 4"); cout << "--------------------------" << endl; cout << "|Enter an IP address: | " << endl; cout << "--------------------------" << endl; cin >> ip; //Writes the Ips down to textfile ofstream myfile; myfile.open("Ips.txt"); myfile << ip << endl; myfile.close(); myfile.open("Ips.txt"); myfile << ip << endl; //Clears the console and change the font color system("cls"); system("color 2"); cout << "--------------------------" << endl; //ping the IP std::string cmd = "ping " + ip; system(cmd.c_str()); cout << "--------------------------" << endl; Active = true; } int main() { while (Active = true) { Function(); } }
-
Öffnen eine Datei ohne Anhängemodus (append) überschreibt diese. Öffne die Datei mit append oder - besser - mach die Datei nur ein einziges Mal auf (Öffnen und Schließen einer Datei sind sehr teure Operationen - vermeiden wenn möglich).
-
Tip: Beim öffnen des Streams (
ofstream::open
) kann man einen "openmode" mit angeben.Kritik: Dein "Active" Konstrukt macht keinen Sinn. Es gibt ja nur zwei Pfade aus "Function". Einmal den "normalen", wo "Active" wieder auf true gesetzt wird...
Und dann evtl. per Exception, die dann aber nirgends gefangen wird, also auch die while Schleife "überspringt".
Und dann ist das "Active = true" in der while Schleife vermutlich auch nicht das was du willst (einfaches "=" vs doppeltes "==").