Teile aus String ausschneiden



  • Hallo Leute,

    habe folgendes Problem. Ich soll aus einer Textdatei in der immer drei Zahlen hinterinander stehen (z.B. "4 12 10") die mittlerste ausschneiden (also als Eergebnis dann "4 10"). Dieses Ergebnis soll dann in eine neue Datei geschrieben werden. Leider habe ich keinen passenden Algorithmus gefunden der das erledigt. Ist es eigentlich möglich eine komplette Zeile aus einer Textdatei zu lesen oder kann man nur mit Datei.get(x) immer ein Zeichen lesen?

    Gruß
    Royal



  • Hallo,

    wenn ich dich richtig verstehe, könnte erase dein Problem lösen.

    Ganz Zeilen kann man mit getline einlesen.



  • Lösungsvorschlag zu dem Auschneiden des Strings.
    Am besten du nimmst für diese Aufgabe die Klasse std::string. In ihr gibt es nämlich ein paar nette Funktionen a la find(), find_first_of(), assign(), etc.

    Dazu vieleicht mal hier schauen: http://www.cppreference.com/cppstring/

    Wenn es immer nur drei Zahlen sind, bei denen die mittlere durch ein Leerzeichen von den beiden anderen getrennt ist, dann suchst du am besten mittels find_first_of(' ') das erste Leerzeichen, mit find_last_of(' ') das letzte Leerzeichen und schneidest die Zeichen dazwischen mit der Methode erase() aus.

    Ansonsten um eine ganze Zeile einzulesen, nimmst du am besten die Funktion getline() (für std::strings) oder cin.getline() (für die char[]-Arrays auch "c-strings" genannt).

    Caipi



  • Hallo,

    danke für eure superschnelle Antwort. habs mit find_first/last_of() und erase gelöst.

    Gruß und Danke
    Royal



  • Sowas reicht nicht aus?

    #include <fstream>
    
    int main() {
      std::ifstream in("in.txt");
      std::ofstream out("out.txt");
      int x, y, z;
    
      while(in) {
        in >> x >> y >> z;
        out << x << ' ' << z << std::endl;
      }
    }
    

Anmelden zum Antworten