Spalten aus eine Zeile auslesen



  • Ich habe mir eine Funktion gebaut, die mir aus einer Datei eine gewünschte Zeile ausgibt, also etwa so:

    string getLineStr( Datei, Zeilennummer)
    

    Damit bekomme bekomme ich eine Zeile, die etwa eine Struktur wie diese hat:

    3   1   32144 abcdefg
    

    Da sind also jede Menge Leerzeichen zwischen den Daten.
    Die Daten will ich da jetzt mit einer Funktion ausgeben, in der ich genau die gewünschte Spalte als Parameter angebe.

    string getColumnStr(const string& line, int columnNum)
    {
     ...
     return //string der gewünschten Spalte
    }
    

    Ich schätze es würde gehen, wenn man sich die Übergänge zwischen Leerzeichen und einem normalem Zeichen sucht und das dann umsetzt, um erstmal die Position der Spalten rauszubekommen. Wenn es nur immer ein Leerzeichen wäre oder sogar Tabs, wäre es sicher einfacher. Bevor ich mir möglicherweise etwas umständliches dafür ausdenke, hier die Frage: Gibts hierfür auch sowas wie fertige Funktionen, Algos, die sowas vereinfachen. Evtl. Boost? Bin aber da nicht so recht fündig geworden.



  • Erste Spalte == 1:

    string getColumnStr(const string& line, int columnNum)
    {
     stringstream stream(line);
     string result;
     for(int i = 0; i < columnNum; i++)
        stream >> result;
     return result;
    }
    


  • Vielen Dank, dass es so einfach ist, hätte ich auch nicht gedacht 👍


Anmelden zum Antworten