14. April 200817 j wo ist denn jetzt bitte mein gedankenfehler....Was soll diese Funktion denn tun? Das sieht jedenfalls furchtbar kompliziert aus. Die Lösung ist viel einfacher. Als erstes solltest du std::string für die Eingabe verwenden, keine char-Arrays.
14. April 200817 j war nen tip von meinem ausbilder... nehme das prob jetzt mal mit nach hause... schönen feierabend... danke soweit
14. April 200817 j Sollte nicht auch eine Exception abfangbar sein bei der Konvertierung des Strings in einen int? Ich bin mir bewusst das die Threadstellerin damit nicht viel anfangen kann. Aber es interessiert mich vom technischen Aspekt. Gleichzeitig frag ich mich ob ihr so eine Lösung als... unschön ansehen würdet?
14. April 200817 j Sollte nicht auch eine Exception abfangbar sein bei der Konvertierung des Strings in einen int? Ich bin mir bewusst das die Threadstellerin damit nicht viel anfangen kann. Aber es interessiert mich vom technischen Aspekt. Gleichzeitig frag ich mich ob ihr so eine Lösung als... unschön ansehen würdet? Bei einem explizieten Cast wäre das unschön. Wenn's eine Funktion macht (wie in Java z.B.), dann wär's ok.
14. April 200817 j Sollte nicht auch eine Exception abfangbar sein bei der Konvertierung des Strings in einen int?Mir ist keine Standardfunktion bekannt, die in so einem Fall eine Ausnahme werfen würde. Gleichzeitig frag ich mich ob ihr so eine Lösung als... unschön ansehen würdet?Kommt drauf an, wo man die Ausnahme fängt. Ausnahme bieten sich immer dann an, wenn die Fehlerbehandlung an übergeordneter Stelle stattfindet. Einen try-block um solche eine Umwandlung finde ich persönlich unangemessen. Das ist IMHO keine Ausnahme, sondern ein normaler Fall im Programmfluss.
15. April 200817 j Ich dachte mir das in einer Form wie hier. Außerdem denke ich ist eine falsch eingegebene Zahl/String doch ein Fehler und wir können von dem .. Normalfall ausgehen das der Benutzer richtige Zahlen eingibt. Aber falls er es nicht schafft kann eingegriffen werden.
15. April 200817 j Ich dachte mir das in einer Form wie hier. Du meinst boost::lexical_cast? Das tut in etwa das, was ich hier beschrieben habe Wenn man so eine Funktion benutzt, muss man die Exception natürlich fangen. Außerdem denke ich ist eine falsch eingegebene Zahl/String doch ein Fehler und wir können von dem .. Normalfall ausgehen das der Benutzer richtige Zahlen eingibt. Die Frage ist doch, ob es eine Ausnahmesituation darstellt, d.h. dass das Auftreten nicht vorhersehbar ist. Bei einer Benutzereingabe ist das sicherlich der Fall, aber IMHO nicht generell bei einer Umwandlung von Strings in Zahlen. Aber das ist vermutlich Geschmackssache.
15. April 200817 j Bei einer Benutzereingabe ist das sicherlich der Fall, aber IMHO nicht generell bei einer Umwandlung von Strings in Zahlen. Aber das ist vermutlich Geschmackssache. Ist das im Endeffekt nicht das selbe? Wenn ein String nicht in eine Zahl konvertiert werden kann, ist das doch eine Ausnahme für das entsprechende Format des Strings (nur Zahlen [und ggf. ein Dezimalpunk/-komma]).
15. April 200817 j Ist das im Endeffekt nicht das selbe? Wenn ein String nicht in eine Zahl konvertiert werden kann, ist das doch eine Ausnahme für das entsprechende Format des Strings (nur Zahlen [und ggf. ein Dezimalpunk/-komma]).Aber nur, wenn du tatsächlich ein bestimmtes Format erwartest. Für mich ist eine Ausnahme immer ein unerwarteter Fehler. Wenn ich einen String parse, der syntaktisch eine Zahl sein kann, aber nicht muss, ist eine fehlgeschlagene Umwandlung für mich nichts Unerwartetes.
15. April 200817 j Aber nur, wenn du tatsächlich ein bestimmtes Format erwartest. Für mich ist eine Ausnahme immer ein unerwarteter Fehler. Wenn ich einen String parse, der syntaktisch eine Zahl sein kann, aber nicht muss, ist eine fehlgeschlagene Umwandlung für mich nichts Unerwartetes. Ja, aber in dem Fall würde doch ein bestimmtes Format erwartet werden. :confused: (Eben nur Zahlen) Wie auch immer, ich glaub das geht zu weit ins OT. Für die Threaderstellerin ist es sicher einfacher, wenn sie isDigit() aufruft.
16. April 200817 j danke das ihr die diskussion so heiß weiter geführt habt :uli ... ich versteh allerdings nur bahnhof :upps
16. April 200817 j Wie weit bist du denn jetzt? Hast du es geschafft, die Eingabe in einen std::string einzulesen?
16. April 200817 j nicht wirklich.. hatten gestern schule und unser lehrer meinte dann tatsächlich, dass wir das so komplex noch gar nicht machen sollen.. trotzdem werde ich sobald ich mal wieder luft habe daran weiter tüfteln... müssen jetzt nen fahrscheinautomaten programmieren und sollen wenn der fertig ist mit der fehlerabfrage so beginnen.. werde mich im zweifel dann man wieder bei euch melden... kenne von java-code die try-catch blöcke, ich weiß, dass es die in c auch gibt.. werden sie genauso genutzt? allerdings möchte ich es auf dem anderen weg auch noch schaffen.. lieben dank, das ihr euch so kümmert...
16. April 200817 j kenne von java-code die try-catch blöcke, ich weiß, dass es die in c auch gibt.. Da irrst du dich. In C gibt es keine Exceptions, zumindest nicht im Standard. Manche Compiler und Bibliotheken enthalten allerdings ähnliche Mechanismen. "Echte" Exceptions gibt es allerding in C++. werden sie genauso genutzt?Die Benutzung in C++ ist ähnlich wie in Java, allerdings gibt es keine "Checked Exceptions".
16. April 200817 j Da irrst du dich. In C gibt es keine Exceptions, zumindest nicht im Standard. Ich erinner mich grad an die Windowsfunktionen die ein DWORD zurückgegeben haben. -> Mitunter großer Switch-Case-Block um die genaue Fehlerbeschreibung anzuzeigen.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.