wortweise einlesen



  • Hi,

    ich möchte ein Textfile öffnen und dessen inhalt wortweise auslesen, damit ich jedes wort so vergleichen kann, mit einem anderem vorgegeben wort.

    Also ich lese bereits zeilenweise ein, aber es soll ja wortweise sein. hier der code dazu:

    ifstream out(stoppwortliste,ios::in);
    	char buff[10000];
    
    	while(!out.eof())
    	{
    		out.getline(buff,250);// zeilenweise
    
    		CString m = out;
    		//out.read(buff,1); // zeichenweise
    
    	}
    

    Hat jemand einen tipp wie ich es erreichen kann wortweise einzulesen???
    Ich finde nähmlich wirklich nicht sehr viel dazu (eigentlich gar nichts).
    Danke für jede hilfe

    Ich prog in vc++, arbeite aber gerade mit ifstream daher hoffe ich das ich hier richtig bin.



  • #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	ifstream a;
    	string datei = "Dateiname.txt"
    	a.open(datei.c_str(), ios_base::in);
    	string wort,_2,_3;	
    	a >> wort; //erstes Wort
    	a >> _2; //zweites Wort
    	a >> _3; //3.Wort.....
    	a.close();
    
    }
    

    Das wichtige ist, dass du es mit dem

    >>
    

    Operator machen kannst, wie bei

    cin
    

    Gruß eXitus



  • #include <iostream> 
    #include <fstream> 
    #include <string> 
    using namespace std; 
    
    int main() 
    { 
        ifstream datei;
        string dateiInhalt;
        datei.open("datei.txt"); 
          while(!datei.eof()){ 
            getline(datei,dateiInhalt,' ');
            cout << dateiInhalt;};
        datei.close(); 
        datei.clear;
    }
    

    wäre auch denkbar 😉



  • enno-tyrant schrieb:

    #include <iostream> 
    #include <fstream> 
    #include <string> 
    using namespace std; 
    
    int main() 
    { 
        ifstream datei;
        string dateiInhalt;
        datei.open("datei.txt"); 
          while(!datei.eof()){ 
            getline(datei,dateiInhalt,' ');
            cout << dateiInhalt;};
        datei.close(); 
        datei.clear;
    }
    

    wäre auch denkbar 😉

    Siehe:
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=eof#Answ



  • was soll ich da finden?

    er weiß nicht wieviel wörter es auszulesen gibt ergo schleife!
    welche schleife empfiehlst du denn wenn diese sooooo schlecht ist???
    auch wenn eof() die schleife einmal zu viel betritt kann man dies ja vorzeitig abbrechen oder etwa nicht?

    while(!datei.eof()){ 
      getline(datei,dateiInhalt,' ');
      if(datei.eof()){break;};
      cout << dateiInhalt;};
    


  • Wie wärs mit lesen?

    Q: Was muss man beim Test auf eof() beim Lesen aus C++ Streams beachten?

    A: Ein Test auf basic_ios::eof() ohne ein Test auf basic_ios::fail() ist nahezu immer unzureichend. basic_ios::eof() liefert true, falls das eofbit des aufrufenden Streams gesetzt ist und false sonst. Das ist alles. eof() gibt weder eine definitive Antwort darüber, ob weitere Daten gelesen werden können, noch ob eine Leseoperation erfolgreich war bzw. fehlgeschlagen ist. eof() eignet sich deshalb nicht als alleinige Testbedingung beim Lesen aus C++ Streams.

    Weiter unten gibts dann noch eine Beschreibung der Methoden der Streams. Einfach mal lesen.

    Edit: Noch was hervorgehoben



  • irren kann sich jeder mal.
    dann erkläre mir WAS hier falsch lufen soll:

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std; 
    
    int main() 
    { 
        ifstream datei; 
        string dateiInhalt; 
        datei.open("datei.txt"); 
          while(!datei.eof()){ 
            getline(datei,dateiInhalt,' '); 
            cout << dateiInhalt << endl;}; 
        datei.close(); 
        datei.clear(); 
        cin.get();
    }
    

    ****************************************************
    datei.txt:

    dies ist ein test, er gibt mir alle zeichen wieder.
    ****************************************************
    programmausgabe:

    dies
    ist
    ein
    test,
    er
    gibt
    mir
    alle
    zeichen
    wieder.
    ***************************************************

    jedes wort etc. steht da, das was 'susiklein' wollte

    ich kann mich auch irren, aber dann sagt mir wobei???

    und kommt nicht wieder mit .eof() is fürn arsch 😮



  • Ich glaube susiklein hat bereits, was sie will, ich glaub auch das das Programm tadellos läuft?! Wer hat gesagt es wäre nicht so, ich bestimmt nicht....
    Gruß eXitus



  • Hallo,

    ich kann mich auch irren, aber dann sagt mir wobei???

    und kommt nicht wieder mit .eof() is fürn ***** 😮

    nur weil es in diesem Fall klappt, muss es nicht immer so laufen. Wieso liest du dir nicht einfach den von HumeSikkins geposteten Link in Ruhe durch, und fragst anschließend nach, wenn noch etwas unklar ist. Meiner Meinung nach kann man den Text gut verstehen und nachvollziehen.



  • Bei welchem Fall klappt es dann nicht??

    Gruß eXitus :xmas1:


Anmelden zum Antworten