eingabe in eine text datei speichern !

DJIN

Grünschnabel
Hi ich habe eine frage :


HTML:
#include <iostream.h>
#include <fstream>

using namespace std;

int main()
{
    
    string Mein_Name;
    
    cout<<"Gib dein Name ein !"<<endl<<endl;
    
    getline(cin,Mein_Name);
    
    ofstream File("ausgabe.txt"); 
    cout.rdbuf(File.rdbuf()); 
    cout << Mein_Name <<endl;
    
    
    system("PAUSE");
    
    return 0;
}

was muss ich machen damit das programm alles was man eintippt in eine text datei in c:/ speichert ? habe hier mal was versucht was ich beim suchen gefunden habe ! kann mir jemand helfen ? thx

//edit ich arbeite mit dem dev c++ compiler !
 
folgende funktionen müstes du noch nutzen.

Ist c geht aber auch in c++

//die variable für den zeiger der datei
FILE *d=NULL;

//name ist der datei name zb test.txt
//das w ist eine datei erstellen
//weitere sachen dazu sihe hilfe
d=fopen("name","w");

//in date schreiben
fprintf(d,"%s \n",Mein:Name);

//datei schliesen net vergessen da sich unter umstanden der ganze scheis nix bringt
fclose(d);
 
danke euch beiden

habe es jetzt selber gelöst !

nur ein problem gibt es

wenn ich das programm starte, etwas eingebe und dann enter drücke kommt eine fehler meldung "mein name.exe hat ein problem festgestellt und muss beendet werden" !
aber wenn ich dann auf c:/ gehe sehe ich meine text datei in der das steht was ich im programm geschrieben habe !

ok speichern tut er schon mal aber wieso kommt diese fehler meldung ?

hier der code :


HTML:
#include <iostream.h> 
#include <fstream> 

using namespace std;

int main() 
{
    string Mein_Name;
    
  std::ofstream File("c:\\ausgabe2.txt");
  std::cout.rdbuf(File.rdbuf());
  getline(cin,Mein_Name);
  std::cout << Mein_Name << std::endl; 
  
  
    system("PAUSE");
    return 0;
    }




//edit: @ deepthroat
vielen dank !
sollte ich noch irgenwelche fragen haben werde ich sie hier posten !
 
Zuletzt bearbeitet:
Hi.

In C++ haben die Standard Headerdateien keine Endung. D.h. es muss "iostream" statt "iostream.h" heissen - so wie bei "fstream" auch. Du verwendest die Klasse std::string - du solltest den "string" Header einbinden.

Wenn du "using namespace std;" schreibst, brauchst du nicht mehr den Namensbereich "std::" vor die Elemente aus dem std Namensraum setzen. Es ist zwar nicht falsch, aber evtl . etwas komisch. ;)

Dann solltest du immer gleich prüfen ob überhaupt etwas von Streams eingelesen werden konnte.

Und warum genau willst du denn cout Umlenken? Es reicht doch wenn du einfach in die Datei schreibst?!
C++:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
  ofstream datei("c:\\ausgabe.txt");
  string zeile;

  if (getline(cin, zeile)) {
    datei << zeile << endl;
  } else  {
    cerr << "fehler beim einlesen" << endl;
  }
}
Der Fehler bei deinem Programm kommt übrigens daher, dass beide Streams den gleichen streambuf verwenden und den Speicher für diesen auch beide freigeben wollen. Das funktioniert natürlich aber nur einmal und schlägt beim zweiten mal fehl. Du müßtest dir den alten streambuf von cout merken und wieder zurücksetzen bevor das Programm beendet wird.

Gruß
 
Hallo,

wie kann ich denn den Inhalt einer Variablen z.B. direkt in die fünfte Zeile einer txt-Datein speichern?
Ich hatte geplant, eine Art Konfig-Datei zu schreiben und möchte eben verschiedene Daten in jeweils eigenen Zeilen haben.

Danke und Gruß,

Torsten
 
Hallo,

wie kann ich denn den Inhalt einer Variablen z.B. direkt in die fünfte Zeile einer txt-Datein speichern?
Ich hatte geplant, eine Art Konfig-Datei zu schreiben und möchte eben verschiedene Daten in jeweils eigenen Zeilen haben.
Das Einfachste wäre wenn du die Zeilen der Datei erst in einen std::vector einliest und dann entsprechend die komplette Datei wieder speicherst.

Gruß
 
Zurück