Viele Textdateien einlesen



  • rüdiger schrieb:

    So denkt man nur, bis man einmal fremden Code warten muss oder wie sagt man so schön: Wenn man Code schreibt, sollte man immer so tun, als sei die Person, die den Code warten muss, ein Verrückter mit einer Waffe.

    Aber wennd er verrückte Programmeiren kann darf ich doch wohl davon ausgehen das er ne einfache WINAPI Funktion kennt und ihm sprintf auch bekannt ist.

    rüdiger schrieb:

    sizeof(char) ist unnötig, ZeroMemory ist unnötig (und müsste man ja erst noch schreiben), sprintf ist nicht schön zu benutzen.

    Das das sizeof(char) unnötig ist weiß ich, ich schreib es trotzdem einheitlich mit rein bei mir, ZeroMemory aus der WINAPI, wenn das jemand nicht kennt kann er die Funktion ja einfach bei google mal suchen dann weiß derjenige auch bescheid, und was sprintf angeht so schlimm ist die Funktion ja nicht. Unterm Strich ist es sowieso nur eine Mögliche Lösung, deine fidne ich auch nicht schlecht, zumal die im Gegensatz zu der ganz oben wenigstens Funktioniert.



  • ZeroMemory aus der WINAPI, wenn das jemand nicht kennt kann er die Funktion ja einfach bei google mal suchen dann weiß derjenige auch bescheid

    aber...aber...aber...ich programmiere unter Linux *schnief*



  • sprintf ist nicht schön zu benutzen.

    Naja also ich finde, man kanns auch übertreiben...
    Viel schlimmer als die stringstream-Variante ist es nicht. Ich weiß dass viele hier bei dem "<<" Operator immer gleich ganz feucht werden, aber dennoch muss man sprintf und Konsorten deswegen nicht unbedingt verteufeln. 🙄



  • > Die finde ich aber auch nicht besser, du wandelst das int in ein Char um, das is zwar schön und gut, aber bringt dir nichts weil du ja keine Zahl erhälst sondern das ascii Zeichen an das du noch, warum auch immer, ne 0 klebst.

    Mein Code hatte nur einen kleinen Fehler, es fehlte ein Klammerpaar:

    tmp = (str + (char) (i + '0')) + ".txt";
    

    Was das + '0' bringt?
    i = 5;
    '0' = 48
    48 + 5 = 63.
    (char) 63 = '5'
    😉

    Ich gebe gerne zu, dass dies keine schöne Lösung ist, aber besser als deine, sie ist plattformunabhängig und hat keinen WinAPI-Dreck drin :P, obwohl meine Lösung mehr Stil von "C mit Klassen" hat.
    Trotzdem, stringstream rules!



  • stringstream rules!

    , weil ?

    Ich benutze es auch, einfach deswegen weil es irgendwie "besser" aussieht. Aber irgendwelche wieauchimmer gearteten technischen Vorteile sehe ich nicht. Ich lass mich natürlich gern eines besseren belehren.



  • So, ich logg mich erst mal wieder ein...

    *log in*

    Okay, wieso stringstream besser ist?
    Es bringt recht viele Funktionalitäten mit, schön in einer Klasse gekapselt und 100%tig sicher. sprintf() hingegen funktioniert zwar auch, du musst aber dann wirklich dich um alles selber kümmern, aufpassen wegen Überläufen etc. Da viele Anfänger damit aber Probleme haben, sollten sie lieber sichere Lösungen bevorzugen.

    Außerdem, wieso C nehmen, wenn man C++ hat? Es ist ja auch eine Stilfrage, aber alles, was C++ bietet, sollte man nutzen, sonst kann man gleich C nehmen.

    Ich war einfach zu faul mich in C++ reinzudenken gestern abend, kam net auf stringstream. Um den Code in C++ umzuwandeln, einfach statt (char) static_cast<char> nehmen und fertig ist die dreckige C++-Lösung. 🙂



  • rüdiger schrieb:

    ...

    Xebov schrieb:

    Nexus schrieb:

    hingegen gleich viel schöner. 🙄

    Es ist ne Lösung die Funktioniert und einfach ist, ob sie schön ist spielt dabei für mich nur ne untergeordnette Rolle.

    So denkt man nur, bis man einmal fremden Code warten muss oder wie sagt man so schön: Wenn man Code schreibt, sollte man immer so tun, als sei die Person, die den Code warten muss, ein Verrückter mit einer Waffe....

    Stimme Dir vollkommen zu ... besonders bedenken sollte man, dass man oftmals selbst dieser arme Wicht ist, der ein Jahr später über dem eigenen Code brütet und sich verzweifelt fragt, was denn bitte damit gemeint gewesen ist und ob dieser und jener Seiteneffekt wirklich beabsichtigt war.

    Gruß,

    Simon2.



  • Danke Leute! Ich probiers nachher gleich mal aus 🙂



  • Ad aCTa (offline) schrieb:

    Was das + '0' bringt?
    i = 5;
    '0' = 48
    48 + 5 = 63.
    (char) 63 = '5'
    😉

    und 69 + '0' ist was? :p

    Xebov schrieb:

    rüdiger schrieb:

    So denkt man nur, bis man einmal fremden Code warten muss oder wie sagt man so schön: Wenn man Code schreibt, sollte man immer so tun, als sei die Person, die den Code warten muss, ein Verrückter mit einer Waffe.

    Aber wennd er verrückte Programmeiren kann darf ich doch wohl davon ausgehen das er ne einfache WINAPI Funktion kennt und ihm sprintf auch bekannt ist.

    WinAPI Funktionen haben hier nichts verloren, vor allem wenn sie ohnehin überflüssig sind und selbst wenn sie nicht überflüssig wären, durch ein standard konformes Konstrukt ersetzt werden könnten.



  • > und 69 + '0' ist was?

    Das ist ein 'u'. Für zweistellige Sachen muss man eben string((char) (6 + '0')) + string((char) (9 + '0')) machen.
    Naja, ich habe nie behauptet, das sei eine schöne Lösung. 🙂


Anmelden zum Antworten