TextDatei mit Tabellen



  • hallo zusammen

    als C++ Anfänger bin am schreiben eines Programms mit VC++ 6.0, dessen Aufgabe eine Textdatei zu lesen. ich habe die Funktion getline benutzt und das Lesen und ausgeben in Konsole zeilenweise geht ohne Probleme.
    Aber der Text enthält Zahlen-Tabellen, die durch Leerzeichen getrennt sind z.B.
    table 1
    122 243 65 7
    44 34 67 58
    ....... usw.
    table 2
    43 77 88 99
    6 13 19 2
    ....usw

    wie kann ich auf bestimmte Zahlen in einer bestimmte Spalte oder Zeile zugreifen
    S.O.S
    Vieln Dank



  • Fang doch damit an, die gewünschte Tabelle komplett in den Speicher einzulesen.
    Dann hast du es schon mal einfacher, sie in Spalten und Zeilen aufzubrechen.



  • im speicher einlesen! wie geht das?



  • #include <vector> 
    #include <fstream> 
    
    int main() 
    {     
    
        std::vector<std::vector<int> > matrix; 
    
        std::ifstream is("..."); 
        size_t vectorSize; 
        for(size_t vectorNum = 0; is; ++vectorNum)    
        { 
            //read vector size 
            is >> vectorSize; 
            if(!is) 
                break; 
    
            //reserve memory for vector in matrix 
            matrix.resize(vectorNum + 1); 
    
            //reserver memory for inner vector 
            matrix[vectorNum].resize(vectorSize); 
    
            //read inner vector 
            for(size_t i = 0; i < vectorSize; ++i && is) 
            { 
                is >> matrix[vectorNum][i]; 
            }        
        } 
    
    }
    

    Denk dir die Antwort um ((c) ssm).

    "Read vector size" brauchst du nicht, ist bei dir immer 4...



  • danke sehr Gast 221212 für das listing ,funktioniert einwandfrei

    aber ich könnte damit gar nichts anfangen.weil ich weiss nicht was es tut.
    ich hab in der Zeile:
    std::ifstream is("c:\testdatei.txt");
    meine Pfad-Datei eingefügt Aber !!!!

    aber wie kann ich das in die konsole sehen?

    bin newbie kannst du mir bitte kurz erklären?

    vielen dank



  • #include <vector> 
    #include <fstream> 
    
    int main() 
    {     
    
        std::vector<std::vector<int> > matrix; 
    
        std::ifstream is("..."); 
        for(size_t vectorNum = 0; is; ++vectorNum)     
        { 
    
            //reserve memory for vector in matrix 
            matrix.resize(vectorNum + 1); 
    
            //reserver memory for inner vector 
            matrix[vectorNum].resize(4);  // 4 Steht für die Anzahl der Elemente pro Zeile
    
            //read inner vector 
            for(size_t i = 0; i < vectorSize; ++i && is) 
            { 
                is >> matrix[vectorNum][i]; 
                cout << matrix[vectorNum][i]; 
            }         
        }
    
        // Jetzt stehen die Werte in "matrix[Zeile][Spalte]"
    
    }
    

    Ach ja, und lösch doch erst mal die "tablex" aus der Datei, erst mal ein table pro Datei versuchen. Bei mehreren tables brauchst du dann halt mehrere Matrizen oder ein

    std::vector<std::vector<std::vector<int> > > matrix;


Anmelden zum Antworten