datei bleibt leer
-
dieses prog. zahl etwas (hier:die zahl 125)in eine datei schreiben:
#include <iostream> #include <stdlib.h> #include <fstream> using namespace std; int main(int argc, char *argv[]) { ofstream datei("c:\\test.txt"); if (!datei) cout << "dong!fehler!\n"; datei << 125; datei.close(); system("PAUSE"); return 0; }ich bin mir eigentlich sicher, dass alles richtig ist, scheinbar ist es dies aber nicht, denn die datei ist nachher immernoch leer..
wie immer dankbar über jede hilfe
-
sieht ok aus,
probiere mal das hierdatei << 125 << flush;
-
danke, werd ich machen.
im moment bin ich an einem anderen comp, und hier klappt es auch ohne flush.
-
Also, wenn ich eine Zahl in eine Datei einschreiben will, mache ich folgendes:
#include <iostream>
#include <fstream>
#include <string>int main()
{
ofstream dat_aus;
int zahl = 125;
string dateiname = "datei.txt";
dat_aus.open(dateiname.c_str(), ios_base::out)
dat_aus << zahl;
}Wichtig ist, dass du noch eine Kontrollstruktur einbaust, die eine Fehlermeldung ausgibt falls die Datei nicht gefunden werden konnte, denn die Datei muss im Verzeichnis deines Projektes liegen. Vielleicht konnte dir das noch ein wenig weiterhelfen.
-
amichian schrieb:
Also, wenn ich eine Zahl in eine Datei einschreiben will, mache ich folgendes:
#include <iostream> #include <fstream> #include <string> int main() { ofstream dat_aus; int zahl = 125; string dateiname = "datei.txt"; dat_aus.open(dateiname.c_str(), ios_base::out) dat_aus << zahl; }Fast akzeptabel:
#include <fstream> int main() { std::ofstream dat_aus("datei.txt"); int zahl = 125; dat_aus << zahl; }Den Dateinamen gibt man im Konstruktor an. Dann hast du RAII und die Datei wird automatisch geöffnet. Und
ios_base::outist beiofstreamDefault, das brauchst du nicht anzugeben.
-
Gerard schrieb:
sieht ok aus,
probiere mal das hierdatei << 125 << flush;Der Standard garantiert, dass im Destruktor der Destruktor des unterliegenden filebufs gerufen wird, dieser ruft close und das wiederum ruft flush, falls die Datei vorher geöffnet war.
Also ist weder flush noch close wirklich notwendig.Ich glaub das Problem liegt irgendwo anders. Schreibschutz, Schreibrechte, falsche Datei angesehen - irgendwie sowas.
Gruß
Werner