Text Datei auslesen und einzeln speichern



  • Er stürzt immer bei der for schleife ab (konnte es soweit eingrenzen)
    und ich weiß nicht ganz genau was du meinst ich bin im moment sehr schwer von begriff.
    schon etwas spät 🙂 😮



  • new []
    delete []

    http://www.informatik-gruppe.de/projekte/dateien/datei_ld_speichern.htm

    Schlimm das sowas in einem Tutorial vorkommt. 🙄



  • long lines = 0;
    string inhalt[29];
    int zeile = 0;
    
                ifstream file;
                string fileName = partition + ":\\schlüssel.txt";
                int alllines = 0;
    
       for (;alllines<26;)
       {
           alllines = alllines + 1;
    
                zeile = zeile + 1;
                file.open(fileName.c_str());
                if(file)
                {
                            string text; // Haupttext
                            int zeilen = 0;
                            while(!file.eof())
                            {
                                        string txt; // Buffer
                                        getline(file, txt);
                                        text = txt + "\n";
                                        zeilen++;
                                        if(zeile == zeilen) // gesuchte Zeile erreicht
                                        {
                                                    cout << text;
                                                    break; // Zeile gefunden, Einlesen abbrechen
                                        }
                                        lines = lines + 1;
                                        inhalt[lines] = text;
                            }
                            file.close();
    
                }
                else
                {
                            cout << "Fehler!";
                } //endelse
                }
    

    kann mir das jemand korigieren ich versteh einfach nicht was hier falsch ist...
    möglicherweise der selbe fehler, wie zu beginn ?
    er gibt noch acht zeilen aus und dann will er nicht mehr.
    wenn ich die zeile die er ausgeben soll zuerst immer wieder angebe dann macht er es aber automatisiert geht es nicht mehr! 😕



  • bitte entschuldigt das doppelposting, aber das ist eine andere frage.
    warum muss ich den array eine größe von mehr als 200 verpassen (200 geht nicht 2000 geht)

    string inhalt[2000];
    

    der rest ist wie oben. 😕



  • Unabhängig von deiner Frage, empfehle ich dir
    std::vector<std::string>; zu verwenden. Da ersparst du dir das rumgeteste wieviel Platz du brauchst, da machst du nur ein std::vector<std::string>.push_back(); und der vector regelt das speichermanagment für dich.

    std::vector<T>.push_back(T)



  • Die for -Schleife ist unnoetig, dafuer gibts ja while ...
    Ausserdem oeffnest du die Datei bei jedem neuen Schleifendurchgang neu, vielleicht liegt auch hier der Fehler. Die Datei solltest du vor Schleifenbeginn oeffnen oder zumindest am Ende der Schleife ein close() und clear() hinzufuegen.
    Ein std::vector wuerde ausserdem vieles um einiges einfacher machen...
    Ausserdem versteh ich nicht ganz was du vorhast... Wenn es dir nur um Zahlen (in Form von einer Zeichenkette) geht, dann gaebe es da eine einfache Loesung:

    ifstream inp("datei.txt");
    if (!inp) return -1;
    std::string lines[26];  // Array, wenn du vector noch nicht kennst...
    size_t zaehler = 0;
    while (!inp.eof())
    {
      getline(inp, lines[zaehler++]);
    }
    

    Gruss
    Cartman



  • ok ... ich glaube ich hätte das vorher in einem Forum mal checken sollen.
    (wenn man mal bedenkt das das ca. 20 zeilen kürzer ist 🙄 und der rest des programms möglicherweise auch verkompliziert ist)
    ach und noch dazu wie ging das noch mit string --> Integer ?
    Ich will jetzt nähmlich die zahlen (string) in einen integer packen.
    an dem auslesen würde ich gerne (jetzt wo er endlich geht) nichts ändern.
    nur den string zum integer würde ich gerne machen, zum beispiel:

    string strng;
    int integer;
    // und jetzt umwangeln und strng in integer packen, aber wie ?
    


  • std::stringstream s;
    std::string zahl = "2";
    
    int z = 0;
    s << zahl;
    s >> z;
    
    std::cout << z;
    

    Im FAQ wäre das auch gestanden..



  • Meine Güte, Tim06TR, liest du eigentlich auch, was man dir antwortet? Schau mal hier, da wurden dir bereits Beispiele gebracht. 🙄



  • ja entschuldigung, da hab ich nicht dran gedacht. 😞


Anmelden zum Antworten