Leerzeichen bei streams bzw strings



  • also mein programm sieht wie folgt aus

    //Das Programm schreibt erst ein eingebenes Wort in eine Datei
    //dann aus der datei ausgeben
    //Florian Weinhold
    //21.11.2005
    
    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        string Text;
        cout<<"Geben sie ein Wort ein, dass in die Datei geschrieben werden soll.\n";
    
            cin>>Text;
            cout<<endl;
            fstream z;
            z.open("blub.txt", ios::out); //Hier wird der Dateipfad angegeben und Datei
                                          //geöffnet.   ios::out zum einlesem
            z << Text << endl;            //Der Text wird übergeben
            z.close();                    //Datei wird geschlossen 
    
        ////////////////////////////////////////////////////////////////////////////
        cout<<"Das folgende Wort wurde in die Datei reingeschrieben:\n"<<endl;
        ifstream f; 
        string s;
        f.open("blub.txt", ios::in);      //öffnet die Datei
        while (!f.eof())                  //überprüft ob daten vorhanden sind
        {
            getline(f, s);                //greift auf eine zeile zu
            cout << s << endl;            //gibt den text aus
    
        }
        f.close();
        system("Pause");
        return 0;
    }
    

    also ein wort kann man ja angeben. aber mehere wörter will der net wie mach ich das? der bricht immer bei leerzeichen ab.



  • cin >> text bricht bei einem leerzeichen ab.
    versuche

    getline(cin,Text);
    

    Kurt



  • Hallo,
    Das liegt daran, das der operator>> von cin nur bis zum nächsten Whitespace liest. Wenn du eine ganze Zeile einlesen willst, ist die Funktion getline() bestimmt etwas für dich.

    Gruß Caipi



  • jo danke kann ich gebrauchen



  • OK ich hab das nu eingabeut aber der schreibt nichts in die datei wo muss ich dass denn eingeben

    //Das Programm schreibt erst ein eingebenes Wort in eine Datei
    //Florian Weinhold
    //21.11.2005
    
    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        string Text;
        cout<<"Geben sie ein Wort ein, dass in die Datei geschrieben werden soll.\n";
    
            //cin>>Text;
            cout<<endl;
            fstream z;
            z.open("blub.txt", ios::out); //Hier wird der Dateipfad angegeben und Datei
            getline(cin,Text);
                                          //geöffnet.   ios::out zum einlesem
            //z << Text << endl;            //Der Text wird übergeben
            z.close();                    //Datei wird geschlossen 
    
        ////////////////////////////////////////////////////////////////////////////
        cout<<"Das folgende Wort wurde in die Datei reingeschrieben:\n"<<endl;
        ifstream f; 
        string s;
        f.open("blub.txt", ios::in);      //öffnet die Datei
        while (!f.eof())                  //überprüft ob daten vorhanden sind
        {
            getline(f, s);                //greift auf eine zeile zu
            cout << s << endl;            //gibt den text aus
    
        }
        f.close();
        system("Pause");
        return 0;
    }
    


  • Du hast das Schreiben in die Datei auskommentiert. ?????

    //z << Text << endl;            //Der Text wird übergeben
    

    Kurt



  • Wieso hast du ein fstream wo du es nur zum Ausgabe benutzt. Ein ofstream würde es auch bringen...

    while (!f.eof())                  //überprüft ob daten vorhanden sind
    

    Das Kommentar wiederspricht hier dem Code. Für nähere Infos siehe hier 😉
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=eof#Answ


Anmelden zum Antworten