Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Text in Datei Speichern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.08.2005, 17:16 Uhr
Lero



So Hallo erstmal, bin ein C++ Neuling, und werd euch wohl in der nächsten Zeit mit Fragen nerven

Mein Problem ist folgendes, ich will einen Text in einer Datei schreiben und speichern. Nun speichert es aber immer nur das erste Wort, alle weitere Wörter die folgend werden nicht abgespeichert. Versteh echt nicht warum, vielleicht könnt ihr mir ja helfen:

Naja hier erstmal der QuellCode:


Zitat:


#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main ()

{
ofstream dat_aus;
string dateiname;

cout <<" Geben Sie den Namen der Datei ein: ";
cin >> dateiname;
cout<< endl;
dat_aus.open(dateiname.c_str(), ios_base::out);

if(!dat_aus)
{
cout << " Datei konnte nicht geoeffnet werden";
cout <<endl;
return -1;
}

string text1;

cout <<" Gib deinen Text ein der gespeichert werden soll: ";
cin >> text1;

dat_aus << text1 <<endl;

dat_aus.close();

return 0;
}




Bin noch ein Neuling, also helft mir bitte!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.08.2005, 08:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


"cin >>" liest immer nur ein wort bis zum nächsten trennzeichen (in diesem fall, leerzeichen). benutz mal cin.getline(...) zum einlesen vom benutzer und vergleichbares zum schreiben in die datei
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.08.2005, 13:08 Uhr
Lero



Danke schonmal, nur wenn ich es mit cin.getline probiere, speichert es auf einmal gar nichts mehr in meine Datei, obwohl sie noch erzeugt wird.

Für mich ist cin.getline neu, deswegen habe ich sie wohl falsch angewendet, ich habe nämlich folgendes verändert:



Zitat:

cout <<" Gib deinen Text ein der gespeichert werden soll: ";
cin.getline(text1);




Stimmt das oder muss ich noch mehr verändern, wäre cool wenn du mir noch einmal helfen könntest.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.08.2005, 13:05 Uhr
Lero



So ich habe mein Problem jetzt selber gelöst.

Das ganze ging dann mit flush.

Hier nochmal der funktionierender Code:


Zitat:


#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main ()

{
ofstream dat_aus;
string dateiname;

cout <<" Geben Sie den Namen der Datei ein: ";
cin >> dateiname;
cout<< endl;
dat_aus.open(dateiname.c_str(), ios_base::out);

if(!dat_aus)
{
cout << " Datei konnte nicht geoeffnet werden";
cout <<endl;
return -1;
}


string text1;

cout <<" Gib deinen Text ein der gespeichert werden soll: "<<flush;
fflush(stdin);
getline(cin,text1);


dat_aus << text1 <<endl;

dat_aus.close();

return 0;

}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.08.2005, 17:27 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


fflush(stdin) ist schlecht, nur unter win vom VC so definiert das es den eingabebuffer leert, ansonsten undefiniert! kann also sein das es dann nicht so funzt wie es soll. Hatte hier irgendwo mal ein entsprechende korrektur gepostet.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: