Config-Datei schreiben / auswerten



  • cpp_anfaenger schrieb:

    Danke. Könnt ihr mir bitte Tipps geben wie ich die obige Aufgabe lösen könnte?

    Schreib doch erstmal ein paar Zeilen in eine Datei rein.
    Dann lies die Datei in einen vector, oder eine list ein und du hast so gut wie gewonnen! 🙂



  • hast du ein Beispiel dafür? 🙂

    Das Auslesen ist kein Problem.
    Aber wie kann ich eine bestimmte Zeile der Datei beschreiben?



  • cpp_anfaenger schrieb:

    hast du ein Beispiel dafür? 🙂
    Aber wie kann ich eine bestimmte Zeile der Datei beschreiben?

    Das dürfte in Deinem Fall nur sehr umständlich (wenn überhaupt) möglich sein. Besser (einfacher) ist es, die ganze Datei einzulesen, Deine Änderungen vorzunehmen, und die ganze Datei wieder wegzuschreiben.



  • Das ist leichter ja, aber eine unschöne Lösung, wenn die Datei über mehrere Seiten geht.
    Sowas wie TStringList wäre perfekt.



  • cpp_anfaenger schrieb:

    Das ist leichter ja, aber eine unschöne Lösung, wenn die Datei über mehrere Seiten geht.
    Sowas wie TStringList wäre perfekt.

    Mit TStringList ist das auch nicht anders, da müsstest du auch die komplette Datei in die Stringliste laden, dort bearbeiten und am Ende wieder abspeichern.



  • cpp_anfaenger schrieb:

    hast du ein Beispiel dafür? 🙂
    Das Auslesen ist kein Problem.
    Aber wie kann ich eine bestimmte Zeile der Datei beschreiben?

    Eine Datei zeilenweise einzulesen und in die einzelnen Zeilen 'reinzugucken' ist ja kein Problem, das weißt du auch.
    Du musst dir ein Format ausdenken, wie du deine Zeile bzw. deinen Datensatz aufbauen willst - dementsprechend wird das auch in einzelne Bestandteile zerlegt.



  • nein ich weiß nicht wie man eine Datei zeilenweise beschreibt, wie man alles in eine Zeile schreibt.

    Wie liest man zeilenweise ein und aus ?



  • Das zeilenweise schreiben hab ich nun hingekriegt 🙂

    fstream f
    f.open("xxx",ios::out);
    for (i= 1; i < 11; i++ )
    {
        f << "zeile" i+1 << "\n";
    }
    f<<endl;
    f.close();
    

    Jetzt würd ich nur noch gerne Zeile X aus der Datei auslesen können.



  • Du kannst dazu std::getline benutzen und alle Linien einlesen und dann die gewünschte rauspicken.



  • Das habe ich nun versucht.

    fstream f;
    char cstr[256];
    char* myarr[4];
    
    for(i=0, i < 4, i++ )
    {
       f.getline(cstr,sizeof(cstr));
       myarr[i] = cstr;
    }
    

    alle myarr[i] ist nun der letzte Wert in myarr[3]
    Was muss ich tun dass myarr[i] auch den Wert an Position i hat???



  • Eingabe-File

    zeile1
    zeile2
    zeile3
    zeile4
    

    Ausgabe-File

    zeile4
    zeile4
    zeile4
    zeile4
    


  • Ich würde das in etwa so machen:

    std::ifstream in ( "file.txt" );
    std::string line;
    std::vector< std::string > lines;
    
    while ( std::getline ( in, line ) )
    	lines.push_back ( line );
    

Anmelden zum Antworten