Internet-Serien fortschritt programm



  • Hy leute,

    ich versuche daten aus einer .txt datei in der konsole wiederzugeben,
    datei inhalt:

    neue Serie 1
    neue Serie 2
    neue Serie drei
    neue Serie vier test nannaa
    next Seire blablaba

    für ein programm wo ich meine aktuellen serien rein schreibe und notiere bei welche folge ich grade bin, später mal.

    Leider giebt er mir nur die erste zeile aus dieser text datei wieder.

    hier mal mein programm..

    #include <iostream>     //std gruppe
    #include <fstream>      //ein und ausgabe stream
    #include <string>       //sätze
    #include <string.h>
    #include <iomanip>      //u.a. zeilen einrückungen
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
        string str;
    
        ifstream lesen;string data;
        lesen.open("Sverzeichnis.txt");
        getline(lesen,data);
        cout << data << endl;
    
        ofstream schreiben;
    
        schreiben.open("Sverzeichnis.txt", ios::out|ios::in|ios::app);
    
    	cout << "Bitte neue Serie eingeben oder mit Zahl auswählen.. \n";
    
            getline(cin,str);
    
            schreiben << str << endl;
    
            schreiben.close(); 
    
            cout << "Die aufgenommene Serie ist, " << str << endl;
    
    	return 0;
    }
    

    wäre über tips sehr dankbar. 🕶
    ich schreibe auf kubuntu mit einem texteditor (kate)



  • Wertvoller Tipp: Immer auf heranrollende LKW achten, wenn man ueber die Strasse geht!

    Spass beiseite. Beschäftige dich mal mit den Grundlagen einer Schleife!



  • danke ja aber ich bekommen leider den zusammenhang nicht hin wie ich mit
    schleifen ihn dazu bekommen alle zeilen wiederzugeben anstelle nur der
    ersten, wie im moment 😕



  • Was macht getline?
    Was machte eine Schleife?
    Wie könnte man das wohl zusammen nutzen?



  • Naja mit einer Schleife kannst du einfach solange Zeilen ausgeben wie noch welche vorhanden sind. Da das wirklich zu den Grundlagen gehört solltest du selbst versuchen es zu programmieren.



  • texmex schrieb:

    getline(lesen,data);
        cout << data << endl;
    

    wäre über tips sehr dankbar. 🕶
    ich schreibe auf kubuntu mit einem texteditor (kate)

    Du liest doch hier nur genau eine Zeile, und die gibst Du dann aus, deshalb brauchst Du eine Schleife, die ALLE Zeilen liest und ausgibt, etwa so:

    lies_eine_zeile;
    //Schleife Beginn
    solange_erfolgreich_eine_Zeile_gelesen_wurde
    {
      gib_die_gelesene_Zeile_aus;
      lies_eine_zeile;
    } //Schleife Ende
    


  • ...endlich klappts

    int main(int argc, char *argv[])
    {
    
        string str;
    
            string text;
            ifstream file;
            file.open("Sverzeichnis.txt", ios::in); 
    
            while (!file.eof()) {        
                getline(file, text); 
                cout << text << endl;
            }
    
            file.close();
    
        ofstream schreiben;
        .
        .
        .
    

    danke leute 🙂



  • besser:

    int main(int argc, char *argv[])
    {
    
        string str;
    
            string text;
            ifstream file;
            file.open("Sverzeichnis.txt", ios::in); 
    
            while (getline(file, text)) {        
    
                cout << text << endl;
            }
    
            file.close();
    
        ofstream schreiben;
        .
        .
        .
    


  • stimmt!



  • texmex schrieb:

    stimmt!

    Warum?

    Weißt du die Antwort?

    ("Weil es kürzer ist und besser aussieht" gilt nicht!)



  • Hi, mein programm schreitet voran & sieht schon ansehnlich aus :p

    Neue Serie eingeben .klappt
    schreiben und ausgeben in datein .klappt
    automatische nummerierung mit ausgabe .klappt
    programm beenden .klappt

    konsolen ausgabe

    1. TV Total 13
    2. TestSerie 22
    3. Sportschau 55
    4. X Factor 9
    5. Der Preis ist heiß 11
    6. Exclusive 30
    7. NeueSerie 60
    
    <Neue Serie eingeben oder mit Zahl auswählen zum editieren>  <Enter zum beenden>
    

    Jetzt würde ich gern die Option hinzufügen,
    dass bei drücken der ensprechenden Zahl, ich die Folgen-Ziffer ändern kann. (die listen länge ist ja variabel)

    Die schwirigkeit vor der ich jetzt stehe.. in Zeile 61 würde ich jetzt gerne starten mit,

    schaue wieviele zeilen zahlen in der datei sind, wenn eine von den vorhandenen zeilennummern gedrückt wird,
    rufe die folgen anzahl zum editieren auf.

    ich weiß leider nicht wie ich das hinbekommen kann..

    deswegen bin ich über jeden Rat froh 😋

    #include <iostream>     //std gruppe
    #include <fstream>      //ein und ausgabe stream
    #include <string>       //sätze
    #include <string.h>
    #include <iomanip>      //u.a. zeilen einrückungen
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
        string str;
        string folge;
    
        cout << "\n";
    
            ifstream read_stream("Verzei.txt");                      // Dieser block 
            if  (!read_stream)                                       // setzt die 
                 return 1;                                           // durchnummerierung.... 1.  2.  3.
                 ofstream write_stream("outVerzei.txt");             // bis alle zeilen beschriftet sind.
            if  (!write_stream)                                      // Er liest dafür die bearbeitungsdatei aus und übergiebt den inhalt mit nummerierung 
                 return 1;                                           // in die out datei, diese wird oben zum start dann wiedergegeben
    
                 string line;
            for (size_t i = 1; getline(read_stream, line); ++i)
                 write_stream << i << ". " << line << endl;
    
                                                                    //in dem bereich gibt er die auflistung wieder
            string text;
            ifstream file;
    
            file.open("outVerzei.txt", ios::in);
            while (getline(file, text)) {                           //schleife , sonst gibt er nur die erste zeile wieder
    
                cout << text << endl;
            }
            file.close();
    
        ofstream schreiben;                 //..eingabe Bereich, bennenung der Serie    //hinzu kommen soll bei eingabe der ensprechenden Serien Nummer
        schreiben.open("Verzei.txt", ios::out|ios::in|ios::app);                        //den eintrag der folgen"Zahl" editieren zu können..
    
        cout << "\n"
             << "<Neue Serie eingeben oder mit Zahl auswählen zum editieren>  <Enter zum beenden>\n"
             << "\n";                                                                   //im moment ist nur die Serien benennung möglich
    
            getline(cin,str);
    
            if(str == "" ) return 0;        //wenn nichts eingegeben wird, wird programm beendet
    
            schreiben << str << " ";
    
            cout << "nun bitte die Folge: ";
    
            getline(cin,folge);
    
            schreiben << folge << endl;
    
            schreiben.close();
    
            cout << "\n" << "Die neu aufgenommene Serie ist \"" << str << "\" Folge : " << folge << endl;
    
    	return 0;
    }
    


  • bitte irgend jemand..



  • Serien zu bearbeiten ist schon ein etwas komplizierteres Vorhaben. Da es schwierig ist direkt in der Datei Zeilen zu ändern würde ich die Serienliste komplett einlesen und in einem std::vector oder so zu speichern. Anschließend kannst du den vector beliebig bearbeiten, Serien hinzufügen, löschen und bearbeiten. Beim Beenden des Programms (oder meinetwegen auch nach jeder Änderung) schreibst du alles in deine Datei.

    Eine Schwierigkeit ist dann noch eine Zeile in deiner Datei in Name der Serie und Nummer der Folge zu trennen. Ist dir klar, dass dein aktueller Code alles als Folge akzeptiert und nicht nur Zahlen? Wenn Folgen nur Zahlen sein dürften dann kann man die Folge einfach als den Block nach dem letzten Leerzeichen identifizieren.



  • Hallo sebi707, danke für deine tips

    das mit dem einlesen ü zb. vectoren werde ich mir gleich mal zu gemüte führen!

    Ja es ist mir klar das im moment die ganze zeile noch zu unstrukturiert ist, deswegen habe ich schon an so eine schreibweise gedacht:

    1;TV Total;13

    um die teil bereiche besser ansprechen zu können, aber wusste auch nicht genau nach welchem thema ich da suchen muss.

    danke erstmal!



  • Ein Trennzeichen zwischen der Serie und Folge ist auch nicht verkehrt, wenn für die Folgen weiterhin Strings erlaubt sein sollen. Dann muss man nur gucken, dass diese Zeichen nicht in den Strings vorkommen oder speziell markiert werden (Escapesequenzen). Ein Stichwort zum googeln wäre CSV (comma-sparated values). Wobei ich die Nummer der Serie nicht unbedingt speichern würde. Die ergibt sich ja aus der Position innerhalb der Datei.

    Dein Programm kann man übrigens fast beliebig kompliziert machen. Von einer einfachen Lösung wo einfach der letzte Block mit Zahlen als die Folge interpretiert wird, über eine Lösung wo bestimmte Zeichen beides voneinander trennen mit Escapesequenzen usw. bis zu einer Lösung mit einer richtigen Datenbank.



  • Im moment würde ich aus zwei gründen den string für die folgen bevorzugen,

    - A) es kann vorkommen, dass Serien die über mehrere Staffeln gehen auch so gespeichert weden können:
    S2F11
    für staffel 2 folge 11 zum beispiel.

    - 😎 ich bei den char, float, long u.a sehe ich immer das diese beschrängt auf eine bestimmte länge sind, da frage ich mich wenn ich mal mehr oder weniger dann eingebe was passiert,.. ist eher nichts für diese sache glaube ich

    und Danke für dein Stichwort, sowas hatte ich gesucht! das passt doch..

    Die Nummerrierung der zeile wollte ich nur dafür mit speichern das ich sie hier

    1. TV Total 13
    2. TestSerie 22
    3. Sportschau 55
    
    <Neue Serie eingeben oder mit Zahl auswählen zum editieren>  <Enter zum beenden>
    

    zB durch drücken der 2 ,dann in die richtige zeile in der datei springe

    ich würde natürlich gerne den einfachen weg gehen und nur mit dem letzten leerzeichen als abtrennung arbeiten aber das kann ich bei string ja vergessen 🙄
    datenbank hört sich auch interesant an, wenn es dadurch dan kompfortabler wird mit den einträgen.. hm aber ist dann wohl zu umfangreich (:

    Lg



  • Die Zeile in der Datei ergibt sich aber schon automatisch und muss man nicht mit in die Datei schreiben. Wenn du die Zeilen mit reinschreibst hast du eventuell Lücken wenn du eine Serie löscht oder du musst die Nummer bei allen folgenden Serien ändern.



  • Oh ok ok..


Anmelden zum Antworten