C++, Textdokument ~> Einzelne Zeilen auslesen



  • Guten Abend allerseits,
    zu Zeit sitze ich an dem Problem fest, dass ich über mein c++ Programm einzelne Zeilen auslesen will, allerdings habe ich bisher noch nicht mehr geschaft, als das, das ganze Textdokument ausgegeben wird

    #include <iostream>
    #include <cstdlib>
    #include <math.h>
    #include <string.h>
    #include <conio.h>
    #include <fstream.h>
    #include <stdexcept>
    
    using namespace std;
    
    main()
    {
       char line[256];
    
      ifstream infile ("test.txt", ios::in);
    
      if (!infile)
        {
          cout << "Kein Tesxtdokument" << endl;
          return 1;
        }
    
      while (infile.getline (line, 100))
        {
    
          cout << line << endl;
        }
      cout << endl;
    }
    

    Ps: wundert euch nicht über die vielen Header, die sind u.a. für andere Teiles des Programms.
    Ich weiss nun wirklich nicht wie ich es hinrkeigen soll, einzelne Zeilen auszulesen, hoffe ihr könnt mir helfen



  • Nimm besser getline und prüf da dann die Flag Bits.



  • Du hast zu viele include s, und <math.h> ist falsch! <cmath> wäre korrekt.



  • Uff, vielen dank für eine konstruktiven Vorschläge, habe aber grade (zufällig gefunden) eine funktionierende Lösung gefunden

    {
    int X ; //x = Zeile die Ausgelesen werden soll
    	vector<string> SS;   //Der Vektor SS enthält String-Elemente
    
    	char Zeile[256]; //Die maximale Zeilenlänge beträgt 255 Zeichen, weil ein String mit einer Null endet
    
    	ifstream infile ("test.txt", ios::in);  //Die Zeilen dieser Datei sollen in einen Vektor geschrieben werden.
    
    	if (!infile)
    		{
    		cout << "Kann Datei nicht öffnen." << endl;
    		system("pause");
    		return 1;
    		}
    
    	while (infile.getline (Zeile, sizeof(Zeile)))
    		{
    		//Hier kann man, wenn nötig, die aktuelle Zeile verändern,
    		// oder wie hier in einem Vektor speichern. :)  -> Quelle: http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html#VECTOR
    
    		SS.push_back(Zeile); //hängt einfach den Inhalt der Zeile als Vektorelement an das Ende des Vektors
    		}
       //************************************
       //Hier wird nur das zweite Element des Vektors ausgegeben:
       cout << "2-te Zeile:" << endl;
       cout << SS[X] << endl;
       //************************************
    system("pause");
    
    }
    

    Ps: Nicht mein Code nur gefunden ^^



  • Wie oben schon erwähnt wurden, nimm besser std::string anstelle des char-Arrays, dann brauchst du dich nicht mehr um die maimale Zeilenlänge kümmern.

    PS: Dein gefundenes Beispiel gibt irgendwas aus, aber nur mit viel Glück die zweite Zeile 😉



  • Zu deinem Quelltext:

    #include <iostream>
    #include <cstdlib>
    #include <math.h>  // ?
    #include <string.h> // ?
    #include <conio.h> // ?
    #include <fstream.h> // ?
    #include <stdexcept>
    
    using namespace std;
    
    main() // ?
    {
    

    Schau dir die Kommentare an und überlege was da schlecht gelöst ist.

    MfG f.-th.


Log in to reply