Gibt es in C++ einen Stringstream den man wie ein string benutzen kann?



  • CStoll schrieb:

    Du überschreibst doch gar nicht den operator(), sondern den "operator string" (Konvertierungs-Operator) - und der schlägt zu, wenn du den StringBuilder an eine Funktion übergeben willst, die einen std::string erwartet

    Wie genial ist das denn?! 😮 Man lernt nie aus! 🙂 👍



  • Hallo camper, Dein Vorschlag erzeugt eine unbehandelte Exception.



  • Dann musst du wohl std::exception fangen, was anderes wird da kaum geworfen 😉

    Das Problem an der ganzen Geschichte ist: sowohl der stringstream als auch der std::string kann an bannig vielen Stellen (Konstruktoren, operator<< usw.) selbst eine exception werfen. Dann fliegt einem irgendwo, wo man eigentlich nur ne selbsgebaute exception erwartet, irgendein std::bad_alloc oder aehnliches um die Ohren, und statt den selbst erkannten Fehler hinreichend zu bearbeiten, fliegt alles auseinander, weil man beim Programmieren etwas fancy sein wollte 😉

    Denn so interessant die Problemstellung aus theoretischer Sicht auch sein mag, die Frage ist doch: wie oft kommts im eigenen Code vor, dass man wirklich eine exception werfen muss? Wenns haeufig auftaucht, sollte man sich Gedanken machen, ob das Design nicht verbessert werden kann (Fehlerquellen lieber zur Compilezeit ausschliessen als zur Laufzeit wild mit Exceptions um sich werfen).



  • pumuckl schrieb:

    Denn so interessant die Problemstellung aus theoretischer Sicht auch sein mag, die Frage ist doch: wie oft kommts im eigenen Code vor, dass man wirklich eine exception werfen muss? Wenns haeufig auftaucht, sollte man sich Gedanken machen, ob das Design nicht verbessert werden kann (Fehlerquellen lieber zur Compilezeit ausschliessen als zur Laufzeit wild mit Exceptions um sich werfen).

    Ja, es ist eine etwas zu theoretischer Sicht, in der Hoffnung ein bisschen besser C++ zu verstehen. Aber es geht nicht darum Fehler zur Laufzeit abzufangen, die man schon zur Compilezeit hätte vermeiden können. Meine DLL spricht physische Geräte an. Da ist jeder Treiberaufruf unsicher und muss absolut sicher abgefangen werden, damit die Software ohne Neustart weiterarbeiten kann, sobald das Geräteproblem behoben wurde.

    Ich habe eine funktionierende Lösung und bin zufrieden. Mir war es darüber hinaus auch wichtig nicht nur um Hilfe zu schreien und sich dann mit der Lösung heimlich davonzuschleichen. Deshalb bemühe ich mich auch dargebotene Lösungsansätze zu verfolgen und die Ergebnisse hier zu dokumentieren. Es besteht immerhin eine geringe Chance anderen damit helfen zu können.

    Nochmals ein herzliches Dankeschön an alle...
    Bernd


Anmelden zum Antworten