developers-forum.de

Normale Version: [C++] Komplette Zeile einlesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
ein weiteres problem diesmal nicht beim programmieren sondern danach

Code:
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <dirent.h>
#include <process.h>
#include <windows.h>
#include <shellapi.h>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
    
    string Dname; //hier startet die Abfrage
                  //des Dateinamens und Art der datei
    
    cout << "Bitte Datei Namen mit Endung txt, dat, oder anderen";
    cout << "\neingeben\n";
    cout << "Datei Name : ";
    cin >> Dname;
    cout << "Name der Datei + Endung:" << Dname << endl;
                  //ENDE
                              
              
    string Dinhalt; //hier startet die Abfrage
                    //des Inhalts der zu erstellenden Datei
    
    cout << "Bitte Inhalt der zu erstellenden Datei angeben\n";
    cout << "Inhalt :";
    cin >> Dinhalt;
    cout << "Inhalt der Datei :\n" << Dinhalt << endl;
                    //ENDE
                    
                    
                    //Das hier sollte nun eig die Datei
                    //mit Datei Namen und Art: Dname
                    //mit Inhalt: Dinhalt
                    //einfügen tuts aber net
                
    fstream f;
    f.open( Dname.c_str() , ios::out); //das hier gibt ein Fehler !!
                             //ich bin noch noob
                            //also bitte nicht auslachen^^
    f << Dinhalt << endl;
    f.close();
}


der funktioniert super nur schreibt er später in z.b. eine text datei nur das erste wort rein (das ich ihm durch den befehl cin gegeben habe)
und ich würd aber gern einen text reinschreiben

noch was macht des eig was das ich fast immer alle includes da lass (damit ich da keinen fehler bekomm ^^)?

Abend,

cin ließt über den >> Operator nur bis zum ersten Space (Leerzeichen, Tab, Return). Eine ganze Zeile bekommt man mit getline.

Code:
#include <iostream>

using namespace std;

int main() {
        string s;
        getline(cin, s);
        cout << s;
}


Zitat:
noch was macht des eig was das ich fast immer alle includes da lass (damit ich da keinen fehler bekomm ^^)?

Der Compiler braucht dann länger zum kompilieren, aber ansonsten macht das nichts.


N43

hm des

Code:
getline(cin, s);
cout << s;

muss nach

Code:
string Dinhalt; //hier startet die Abfrage
                    //des Inhalts der zu erstellenden Datei
    
    cout << "Bitte Inhalt der zu erstellenden Datei angeben\n";
    cout << "Inhalt :";

in meiner Funktion ?

Jetzt verschluckt er das erste wort nach

Code:
cout << "Inhalt :";

d.h. kommt in der fertigen Datei z.b. "test.txt" nicht an dort steht dann

Code:
wie gehts der wetl

ob wohl ich gesagt habe er soll

Code:
Hallo wie gehts der wetl

eintragen

Abend,

jap, das geline(cin, s) ließt die ganze Zeile ein. cout war nur zum Testen da Smilie

Bei dir also

Code:
cout << "Bitte Inhalt der zu erstellenden Datei angeben\n";
cout << "Inhalt :";
getline(cin, Dinhalt);
cout << "Inhalt der Datei :\n" << Dinhalt << endl;



N43

hm
jetzt schliest er das programm nachdem ich den Datei namen eingegeben habe sofort wieder !!

Code:
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <dirent.h>
#include <process.h>
#include <windows.h>
#include <shellapi.h>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
    
    string Dname; //hier startet die Abfrage
                  //des Dateinamens und Art der datei
    
    cout << "Bitte Datei Namen mit Endung txt, dat, oder anderen";
    cout << "\neingeben\n";
    cout << "Datei Name : ";
    cin >> Dname;
    cout << "Name der Datei + Endung:" << Dname << endl;
                  //ENDE
                              
              
    string Dinhalt; //hier startet die Abfrage
                    //des Inhalts der zu erstellenden Datei
    
    cout << "Bitte Inhalt der zu erstellenden Datei angeben\n";
    cout << "Inhalt :";
    getline(cin, Dinhalt);
    cout << "Inhalt der Datei :\n" << Dinhalt << endl;
                    //ENDE
                    
                    
                    //Das hier sollte nun eig die Datei
                    //mit Datei Namen und Art: Dname
                    //mit Inhalt: Dinhalt
                    //einfügen tuts aber net
                
    fstream f;
    f.open( Dname.c_str() , ios::out); //kein Fehler mehr !!
    f << Dinhalt << endl;
    f.close();
}

das heist wol das er nichts mehr zu tuhn hat er fragt mich nach dem dateien namen angeben nichts mehr (ich hab mal sleep(200) rein gemacht der schreibt alles also)

Code:
string Dinhalt; //hier startet die Abfrage
                    //des Inhalts der zu erstellenden Datei
    
    cout << "Bitte Inhalt der zu erstellenden Datei angeben\n";
    cout << "Inhalt :";
    getline(cin, Dinhalt);
    cout << "Inhalt der Datei :\n" << Dinhalt << endl;
                    //ENDE

die couts schreibt er !!

Was soll er denn danach noch machen?

Er schreibt den Text in die Datei und beendet sich dann.

N43
nochmal ? nach der ersten abfrage de namens bezüglich

sollte er eig nach dem inhalt fragen TUHT ER ABER NICHT ^^
ehm er gibt nur die ausgaben der couts mehr net
Hab das Programm mal probiert. Das letzte newline Zeichen lag noch im Eingabepuffer, weshalb er keine ganze Zeile gelesen hatte.

Setzt vor das getline ein cin.ignore(), dann geht's.

Code:
cout << "Bitte Inhalt der zu erstellenden Datei angeben\n";
    cout << "Inhalt :";
    cin.ignore();
    getline(cin, Dinhalt);
    cout << "Inhalt der Datei :\n" << Dinhalt << endl;

JUHU danke N43 jetzt funktionierts

DANKE
Referenz-URLs