Textdatei ausgeben



  • Hallo Community,
    ich bleib gerade an, vermutlich einer ganz einfachen, Übung hängen.
    Ich will den Inhalt einer Textdatei, mittels cout, auf die Konsole ausgeben.

    Hier mein erster Versuch:

    ofstream File;
         File.open("date.txt", ios::in);
         char inhalt;
         File >> inhalt; //Fehler: no match for 'operator>>' in 'File >> inhalt' 
         cout << inhalt;
         File.close();
    

    Das geht allerdings nicht, stattdessen erhalte ich eine Fehlermeldung.

    Ich hoffe ihr versteht was ich meine.

    Danke!



  • ifstream ftw!



  • Oh, natürlich Danke!

    EDIT:
    Jetzt wird immer nur bis zum nächsten Leerzeichen oder Zeilenumbruch ausgegeben. Wie kann ich das ändern?



  • Also bis zum Zeilenumbruch sollte so aussehen:

    ifstream add;
    vector<string> inhalt1;
    string temp;
    add.open("BEISPIEL.txt", ios::binary | ios::in);
    if(!add)
    {
    	cout<<"\tFehler - Auf die Datei konnte icht zugegriffen werden,\n\t möglicherweise existiert sie nicht.\n";
    }
    else
    {
    	while (!add.eof())
    	{
    		getline(add, temp);
    		inhalt1.push_back(temp);
    	}
    	for (unsigned int i=0; i<inhalt1.size(); i++)
    	{
    	cout << inhalt1[i] << endl;
    	}
    	add.close();
    }
    

    Das solte dein Problem lösen, denk ich 😃
    Ich hoffe ich konnte dir helfen.

    MFG Snow



  • Hallo

    Wolltest du uns jetzt zeigen, wie toll du von Tutorials abschreiben kannst oder was?

    Mfg.
    way



  • @way Unnötiger Beitrag 🙄 Es ist egal wie er hilft.
    @Snowfey Wenn du hilfst dann aber bitte richtig, deine Lösung hat eine kleine Unschönheit,man sollte beim lesen von Dateien auf eof() verzichten und anstatt eine derartige Lösung nutzen die deiner fast entspricht.

    while (getline(add, temp))
        {
    
            inhalt1.push_back(temp);
        }
    

    EDIT:Warum man auf eof verzichten sollte Danke an Tachyon für den Link, hab mir den mal aus einem deiner Post gemaust 😃



  • way schrieb:

    Hallo

    Wolltest du uns jetzt zeigen, wie toll du von Tutorials abschreiben kannst oder was?

    Mfg.
    way

    Nö, aber so hab ich's in meinem Programm und es funktioniert 😣

    MFG Snow



  • Firefighter schrieb:

    @way Unnötiger Beitrag 🙄 Es ist egal wie er hilft.
    @Snowfey Wenn du hilfst dann aber bitte richtig, deine Lösung hat eine kleine Unschönheit,man sollte beim lesen von Dateien auf eof() verzichten und anstatt eine derartige Lösung nutzen die deiner fast entspricht.

    while (getline(add, temp))
        {
            
            inhalt1.push_back(temp);
        }
    

    EDIT:Warum man auf eof verzichten sollte Danke an Tachyon für den Link, hab mir den mal aus einem deiner Post gemaust 😃

    Okay, dank dir. Ich werd's berücksichtigen 🙂

    MFG Snow



  • Die einfachste Möglichkeit ist wohl:

    std::ifstream reader("file.txt");
    std::cout << reader.rdbuf() << '\n';
    

    😉

    @way, könntest Du nur einmal was produktives Beitragen?



  • Tachyon schrieb:

    Die einfachste Möglichkeit ist wohl:

    std::ifstream reader("file.txt");
    std::cout << reader.rdbuf() << '\n';
    

    😉

    @way, könntest Du nur einmal was produktives Beitragen?

    Nö. Der postet selber nur hässlichen C/C++ Mix.



  • Vielen Dank, es geht nun einwandfrei.



  • VinManWin schrieb:

    Ich will den Inhalt einer Textdatei, mittels cout, auf die Konsole ausgeben.

    yo!

    #include <windows.h>
    #include <stdio.h>
    
    int main ()
    {
    	char* file = "test.txt";
    	char cmd [FILENAME_MAX+6]={0};
    	sprintf ( cmd, "type %s", file );
    	system (cmd);
    	return 0;
    }
    


  • yo! schrieb:

    ...

    Wir sind hier aber nicht im C-Forum 😉

    #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ifstream datei("test.txt");
        std::string test_string;
        while(datei >> test_string)
        {
            std::cout << test_string << std::endl;
        }
    }
    

    Tachyon schrieb:

    ...

    Deine Variante ist natürlich nicht schlecht, aber ich denke mit rdbuf() kannst du nicht auf die einzelnen Zeilen zugreifen, was man in meinem Fall kann.



  • yo!

    #include <stdlib.h>
    int main(void) 
    { 
    	system ( "type test.txt" );
    	return 0; 
    }
    

    😃


  • Administrator

    yo! schrieb:

    yo!

    #include <stdlib.h>
    int main(void) 
    { 
    	system ( "type test.txt" );
    	return 0; 
    }
    

    😃

    Ist immer noch C.
    In C++ wäre der Header <cstdlib> und system wäre im Namespace std .

    Und zusätzlich sei noch auf diesen FAQ Eintrag verwiesen:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.html

    Yo Grüssli ...



  • Bin auch noch Anfänger und ich habe das Problem so gelöst:

    // DateiLesen.cpp
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main() {
    	ifstream puffer;
    	string out;
    	puffer.open("DateiLesen.cpp", ios::binary | ios::in);
    	do {
    		getline(puffer,out);
    		cout << out << endl;
    	} while(!puffer.eof());
    }
    


  • FreakY<3Cpp schrieb:

    Deine Variante ist natürlich nicht schlecht, aber ich denke mit rdbuf() kannst du nicht auf die einzelnen Zeilen zugreifen, was man in meinem Fall kann.

    Nach einzelnen Zeilen wurde aber nicht gefragt. 😉



  • Mal davon abgesehen das seine Lösung, ja auch gar keine Zeilen einliest 😃 Sondern nur solange bis ein Leerzeichen kommt und dann weiter bis zum nächsten.


Anmelden zum Antworten