tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
674
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Andruschka Andruschka ist offline Rookie
    Registriert seit
    Nov 2009
    Beiträge
    5
    Folgendes Problem:
    Ich habe eine .txt Datei. In dieser Datei sind veschiedene Überschriften mit Texten:

    ÜBERSCHRIFT1:
    bla
    bla bla
    und nochmal bla
    <-- Leerzeile
    ÜBERSCHRIFT2:
    bla
    <-- Leerzeile

    usw. alle unterschiedliche Zeilenanzahl!

    Ich will die .txt Datei so auslesen,
    dass jeder Text (die blas) in einen eigenen vector<string> abgespeichert werden.
    Dabei sollen die Überschriften nicht mit abgespeichert werden!

    string str, temp;
    vector<string> text1;

    ifstream inDatei("texte.txt");

    if (!inDatei.is_open())
    {
    cout << "Fehleratei konnte nicht geoeffnet werden,"
    << " beliebige Taste zum beenden druecken" << endl;
    cin.ignore(2);
    exit(1);
    }

    //schleife drum.... while(inDatei !=EOF) ?

    getline(inDatei, temp);

    do
    {
    getline(inDatei, str);
    text1.push_back(str);
    temp=str.length();
    }
    while(temp=="\n");

    //?


    danke im Vorraus
    Andy
    Geändert von Andruschka (23.11.09 um 17:05 Uhr)
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Bitte mach dich erstmal mit dem Forenregeln und Funktionen vertraut. Nutze die Code-Tags.

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    std::vector<std::vector<std::string> > entries;
     
    std::ifstream input(...);
    std::string line;
     
    while (input.ignore(std::numeric_limits<streamsize>::max(), '\n')) {
      entries.push_back(std::vector<std::string>());
     
      while (std::getline(input, line) && !line.empty()) {
        entries.back().push_back(line);
      }
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin und Willkommen bei Tutorials.de!

    Vorab: nutze bitte zum Posten Deines Codes die Code-Tags (entweder der #-Button im Editor oder Klammerung des Codes mit [_CODE_][/_CODE_] OHNE die Unterstriche!!)

    Zitat Zitat von Andruschka Beitrag anzeigen
    Ich will die .txt Datei so auslesen,
    dass jeder Text (die blas) in einen eigenen vector<string> abgespeichert werden.
    Dabei sollen die Überschriften nicht mit abgespeichert werden!
    Verstehe ich das richtig? Du willst für jeden Textblock einen eigenen Vektor anlegen?
    Warum

    getline(inDatei, temp);

    do
    {
    getline(inDatei, str);
    text1.push_back(str);
    temp=str.length();
    }
    while(temp=="\n");
    Hmm, du liest zunächst die erste Zeile in den String "temp" ein, dann (in der Schleife) die zweite nach "str" und versuchst dann die Länge von "str" in den String "temp" zu schreiben ... das geht ohne zu Casten schonmal nicht!

    Und was soll Deine Abbruchbedienung bewirken? Da Du ja zuvor die Länge des Strings geschrieben hast (gesetzt den Fall dass das dann klappt), dann wird Deine Bedingung nie erfüllt werden!
    Lies einfach solange, bis Dir 'getLine' keine Zeilen mehr liefert (Stichwort EndOfFile/EOF)!

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    Andruschka Andruschka ist offline Rookie
    Registriert seit
    Nov 2009
    Beiträge
    5
    Sorry das mit dem Code einfügen hatte ich erst gesehen als es schon abgeschickt war!

    Ich benötige für jedes Textfragment einen eigenen Vector!
    Meine Idee war
    Schleife um das ganze bis EOF
    dann erste Zeile jeweils abfangen und wegschmeißen (Überschrift brauch ich nicht)
    dann die Zeilen bis zu nächsten Leerzeile in einen vector
    und dann das ganze wieder von vorn...

    danke
    Andy
     

  5. #5
    Andruschka Andruschka ist offline Rookie
    Registriert seit
    Nov 2009
    Beiträge
    5
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
        getline(inDatei, temp_1);
        do
        {
            getline(inDatei, str);
            text1.push_back(str);
            temp=str;
        }
        while(!temp.empty());

    soweit wäre ich schonmal....
    jetzt noch die schleife...

    Und wie kann ich das regeln das der das in veschiedene vectoren schreibt? also text1, text2, text3,...

    danke
    Andy
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Andruschka Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
        getline(inDatei, temp_1);
        do
        {
            getline(inDatei, str);
            text1.push_back(str);
            temp=str;
        }
        while(!temp.empty());

    soweit wäre ich schonmal....
    Du wiederholst dich. Und irgendwie scheint dir entgangen zu sein, dass ich dir die Lösung schon gegeben habe.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Text aus datei einlesen und in string umwandeln
    Von drachentor1 im Forum Java
    Antworten: 2
    Letzter Beitrag: 26.09.10, 14:51
  2. Datei in String einlesen danach durchsuchen
    Von celloman im Forum Java
    Antworten: 17
    Letzter Beitrag: 05.10.07, 14:27
  3. [bc++b6] String aus datei einlesen
    Von wedhead im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 27.02.07, 02:59
  4. Antworten: 1
    Letzter Beitrag: 18.06.05, 11:35
  5. Antworten: 6
    Letzter Beitrag: 20.05.05, 10:04