textdatei



  • wie denn? es gibt nichts danach außer leerzeichen



  • kobero schrieb:

    matrix[zeile].resize(4);

    Schreibe lieber:

    matrix[zeile].resize(vectorSize);
    

    auf http://www.cppreference.com/cppvector/resize.html steht:

    void resize( size_type num, const TYPE& val = TYPE() );
    

    Schaue lieber mal ab und zu dort nach 😉

    MFG Ghost



  • kobero schrieb:

    es gibt nichts danach

    Ach wirklich?

    kobero schrieb:

    außer leerzeichen

    Ah so.

    Bye, TGGC (Pipe my World.)



  • Leerzeichen gibt es dahinter nun auch nicht. Dies würde ja unnötig Speicher verbrauchen... Auch Leerzeichen brauchen Platz.



  • Green_Ghost schrieb:

    matrix[zeile].resize(vectorSize);
    

    wo liegt der Unterschied? Da http://www.cppreference.com/cppvector/resize.html habe ich nichts kapiert(my english is very bad)

    henselstep schrieb:

    Leerzeichen gibt es dahinter nun auch nicht. Dies würde ja unnötig Speicher verbrauchen... Auch Leerzeichen brauchen Platz.
    

    wie soll ich denn das vermeiden
    ich möchte einfach das Null am Ende weg haben

    Danke für jeden tip



  • Hab deinen Quelltext jetzt nicht durchgelesen, kann dir aber sagen, dass bei schleifen folgender Art:

    while (!blabla.eof()) {
    }
    

    Die schleife immer einmal zu viel ausgeführt wird.

    mit einem matrix.pop_back() kannst du dann das letzte Element wieder löschen.



  • da kommt deine NULL her:

    return 0;
    

    und hier hättest du eine weitere '1' am ende:

    return 1;
    

    abhilfe:

    statt

    int lesen()
    

    machst du das was die funktion wirklich zurückgibt, nämlich nichts:

    void lesen()
    ...
    //return 0; <- brauchst du ja jetzt nicht mehr
    

    //edit: üblige schreibfehler entfernt



  • Uh...der Rückgabewert von "lesen" wird nie ausgegeben, also bezweifle ich, dass er mit irgendetwas etwas zu tun hat.

    Ich denke (ohne es jetzt getestet zu haben), dass in diesem Fall schon

    for(spalte= 0;
        (spalte < vectorSize) && (inputstrom >> matrix[zeile][spalte]);
         ++spalte) {
        std::cout <<matrix[zeile][spalte]<< ' ';
    }
    

    reicht. inputstrom >> matrix[zeile][spalte] liest nämlich nicht nur den Wert ein, sondern gibt auch den Stream zurück. Das heißt, sobald die Einleseoperation fehlschlägt, bricht die Schleife ab, weil der Stream sein failbit gesetzt hat und bei Umwandlung in bool false zurückgibt.



  • Hallo
    Erst mal vielen Dank für eure Ideen.
    Für Gast221212: vielleicht hast du recht aber wo (in welcher stelle) kann man die „ matrix.pop_back()“ einsetzen?

    Für enno-tyrant : 0xdeadbeef hat völlig recht , der Rückgabewert von einer Funktion wird nie automatisch ausgegeben. Trotzdem habe ich deinen Vorschlag probiert, die Null wird immer noch ausgegeben.

    Für 0xdeadbeef : es hab es probiert : es werden nur die 2. und 4. Spalte ausgegeben.
    Aber die Idee ist nicht schlecht. Genau dort in der for-schleife muss man was unternehmen.

    Danke für jeden weiteren Tip



  • kobero schrieb:

    Hallo
    Erst mal vielen Dank für eure Ideen.
    Für Gast221212: vielleicht hast du recht aber wo (in welcher stelle) kann man die „ matrix.pop_back()“ einsetzen?

    nach

    }while(!inputstrom.eof());
    

    Du musst dir jedoch selbst überlegen, welchen vector du poppen willst also ob:
    matrix.pop... oder matrix[ner_positon].pop...

    und dann noch ne Schleife für die Ausgabe schreiben!


Anmelden zum Antworten