# eingabe in eine text datei speichern !



## DJIN (23. Juli 2007)

Hi ich habe eine frage :



```
#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 !


----------



## Faller (23. Juli 2007)

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);


----------



## Hallasas (23. Juli 2007)

Hallo !
Ich hoffe, dies hilft:


```
ofstream File("c:\\datei.txt");
```

Gruß


----------



## DJIN (24. Juli 2007)

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 :



```
#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 !


----------



## deepthroat (24. Juli 2007)

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?!

```
#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ß


----------



## aKom (29. Juli 2007)

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


----------



## deepthroat (30. Juli 2007)

aKom hat gesagt.:


> 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ß


----------

