In Datei schreiben
-
Hi, ich wollte mit folgendem Programm "hallo" in eine Textdatei schreiben.
#include <fstream> using namespace std; string out(char buf[]){ string wort; wort=buf; return wort; } int main() { char buf[5]; buf[0]='h'; buf[1]='a'; buf[2]='l'; buf[3]='l'; buf[4]='o'; fstream f; f.open("eingabe.txt", ios::out); f << out(buf) ; f.close(); }
Drin steht dann allerdings
hallo8=
keine Ahnung, woher das "8=" kommt.
Eine andere Möglichkeit, aus einem Char-Array in eine Datei zu schreiben, ist mir nicht eingefallen.
gruß, andre
-
Die Schreibfunktion muss ja wissen, wann dein String zu Ende ist.
Üblicherweise wird der String daher mit einem Null-Byte abgeschlossen.Mache das Array also ein Byte länger und trage dafür Sorge, dass hinten ein Byte mit dem Wert Null steht.
-
Hallo fehlt vieleicht die Terminierende Null im String.
Versuche mal strcpy(buf,"Hallo");
und string.h includieren
-
darkfire00 schrieb:
Hallo fehlt vieleicht die Terminierende Null im String.
Versuche mal strcpy(buf,"Hallo");
und string.h includierenHierbei muss man aber beachten, dass in seinem Quelltext nur 5 Bytes reserviert wurden. StrCpy schreibt inklusive dem Abschluss aber 6 davon.
-
@darkfire: bring ihm nicht so nen Mist bei ... cstring würde der Header heißen -.-
#include <fstream> int main() { char buf[6] = {'H', 'a', 'l', 'l', 'o', 0 }; std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return 0; file_stream << buf << std::endl; file_stream.close(); }
-
Danke
-
#include <fstream> int main() { char buf[] = "Hallo"; std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return 0; file_stream << buf << std::endl; file_stream.close(); }
-
#include <fstream> #include <string> int main() { std::string str = "Hallo"; std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return 0; file_stream << str << std::endl; file_stream.close(); }
-
andre666 schrieb:
Hi, ich wollte mit folgendem Programm "hallo" in eine Textdatei schreiben.
...Dann tu das doch einfach:
#include <fstream> int main() { std::ofstream f("eingabe.txt"); // ich würde es ja "ausgabe" nennen f << "Hallo"; return 0; // braucht's eigentlich nicht bei main, finde ich aber konsistenter }
Gruß,
Simon2.
-
Ich denke damit hat Simon2 gewonnen.
-
Shinja schrieb:
Ich denke damit hat Simon2 gewonnen.
Aus Niederlagen lernt man mehr, als aus Siegen
-
#include <fstream> int main() { std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return 0; file_stream << "Hallo" << std::endl; file_stream.close(); }
...
-
(D)Evil schrieb:
#include <fstream> int main() { std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return 0; file_stream << "Hallo" << std::endl; file_stream.close(); }
...
Nur zur Anmerkung: ein ofstream braucht kein std::ios::out und geclosed wird auch automatisch.
Aber nachzusehen, ob das Öffnen geklappt hat, ist keine schlechte Idee (muss gestehen, dass ich es aus Gründen der Übersichtlichkeit weggelassen habe).Gruß,
Simon2.
-
Simon2 schrieb:
Aber nachzusehen, ob das Öffnen geklappt hat, ist keine schlechte Idee (muss gestehen, dass ich es aus Gründen der Übersichtlichkeit weggelassen habe).
Ja, aber das kann man drastisch kürzen:
#include <fstream> int main() { std::ofstream f("datei"); return not f or f << "Hallo"; }
Ohne Test geht es natürlich noch kürzer:
#include <fstream> int main() { std::ofstream("datei") << 42; }
Win!
-
MIT Test:
#include <fstream> int main() { return !(std::ofstream("datei") << 42); }
-
Hi,
ich nehme meinen Einwand zurück: Den Test braucht's doch nicht.
Gruß,
Simon2.