Einlesen einer beliebig langen Zeichenkette in ein string Objekt



  • Hallo,

    ich versuche aus einem ausgelagerten Text Zeilenweise etwas einzulesen und möchte dies später in einen string verspeichern. Wenn die Zeilen aber sehr lang werden, wird nur noch Müll gespeichert.

    Als Beispiel:

    //datei ist der Name Input- Filestream, puffer ein char [401] Array
    //konverter ist ein string.
    datei.getline(puffer,400,'\n');
    konverter=puffer;
    string cutted(konverter,15);
    

    Bei einer Zeilenlänge von 24 Zeichen klappt alles ganz hervorragend, eine Zeile ist aber 34 Zeichen lang, da wird dann nur irgendnein Speichermüll in den String geschrieben. Wie kann ich das verhindern?
    Gibt es auch eine Möglichkeit, ohne char Array zu arbeiten und die via getline eingelesene Zeile direkt in einen String zu speichern, ohne dne Umweg über das Array zu gehen?
    Bin für alle Tips dankbar!



  • Wie groß ist den konverter?

    Wenn der String groß genug ist um die gelesene Zeile aufzunehmen dann ja





  • PAD schrieb:

    Wie groß ist den konverter?

    Wenn der String groß genug ist um die gelesene Zeile aufzunehmen dann ja

    konverter ist ein standard string Objekt...aber was meinst Du mit "dann ja"?



  • PAD schrieb:

    Wie groß ist den konverter?

    Wenn der String groß genug ist um die gelesene Zeile aufzunehmen dann ja

    konverter ist ein standard string Objekt...aber was meinst Du mit "dann ja"?



  • Physikalischer Fehler schrieb:

    Gibt es auch eine Möglichkeit, ohne char Array zu arbeiten und die via getline eingelesene Zeile direkt in einen String zu speichern, ohne dne Umweg über das Array zu gehen?

    string line;
    getline(datei,line);
    


  • Danke für den Tip zur Vermeidung des Arrays. Nur leider habe ich nach wie vor ein Problem der Code sieht nun folgendermassen aus:

    getline(datei,konverter);
    string cutted(konverter,15);
    

    konverter ist eine Hilfsstringobjekt aus dem dann dass eigentlich einzulesenede (alles ab der 15. Stelle bis Zeilenende) ausgeschnitten wird um dieses dann im string cutted abzulegen. Das funktioniert aber nur bei kleineren Zeichenketten, die einzelnen Zeilen können aber locker schonmal 400 Zeichen+ lang sein. Wird eine etwas längere Kette(so über 25 Zeichen) eingelesen enthalten die strings nur irgendwelche wirren Kombinationen aus Zahlen und Steuerzeichen. Wie kann ich in einen String längere Ketten einlesen?



  • Ich habe da beim Debuggen falsche Zeilen gelesen...sorry...hat alles funktioniert.


Anmelden zum Antworten