Formatierung in C++
-
t.schubert schrieb:
Ich denke, eine Funktion wie "FloatToStr" wäre gut.
Gibt es ja in Borland bzw. in MS Visual als "ToString".
Dann noch wie gewünscht runden bzw. abschneiden und fertig.Einerseits übernimmt sowas overloading (also reicht toString() und man braucht keinen "Float..." etc. davor).
Andererseits: Welche Vorteile sollte eine toString()-Funktion, die dieselbe Funktionalität wie die Streams ("runden und abschneiden" ... aber Du willst doch bestimmt auch mal Werte als "hex" darstellen, Fließkommazahlen mit ',' statt mit '.' trennen wollen, und ... und ... und) gegenüber der derzeitigen Lösung bieten?Ich habe den Eindruck, dass viele Leute (sorry, aber: Gerade Anfänger/Umsteiger) denken, dass streams/operator<<(), std::string und std::vector sich heimlich im Keller treffen, um sich dort von der dem Benutzer geklauten Performance Spiegeleier zu braten.
Lasst es Euch sagen: Es ist nicht so!
Wenn diese Konstrukte den Rechner beschäftigen, dann mit "Komfort" in Sachen
- Funktionalität (die sonst auch selbst implementiert werden müsste)
- Entwicklungsaufwand (durch "gutes" Design).
Deswegen halte ich die meistens dieser Vergleiche für ziemlichen Unsinn...Gruß,
Simon2.
-
Ist ja OK, das Problem ist halt immer, dass man das den Leuten klar machen muss, die halt nicht so mit der Informatik unterwegs sind - und dafür braucht man halt sehr viel Nerven und guten Willen, da diese Leute meistens die Entscheidungsträger sind.
Ich habe das jetzt sauber erklärt, habe den Kompromiss zwischen Schnelligkeit, Sicherheit und Komfort gefunden und bedanke mich noch einmal für Eure Hilfe.
-
t.schubert schrieb:
Ist ja OK, das Problem ist halt immer, dass man das den Leuten klar machen muss, die halt nicht so mit der Informatik unterwegs sind - und dafür braucht man halt sehr viel Nerven und guten Willen, da diese Leute meistens die Entscheidungsträger sind....
Wenn es gut (oder zumindestens nicht total grottige) Entscheidungsträger sind, sollten sie sich in solche Implementierungsdetails sowieso nicht einmischen, sondern Dir als Fachmann vertrauen. :p

(aber ich weiß, dass solche Traumprinzen rar sind)
Gruß,
Simon2.
-
t.schubert schrieb:
Ich denke, eine Funktion wie "FloatToStr" wäre gut.
Gibt es ja in Borland bzw. in MS Visual als "ToString".
Dann noch wie gewünscht runden bzw. abschneiden und fertig.Kommt im neuen Standard. Es wird ein
to_stringund einto_wstringgeben. Desweiterenstoi,stol,stoul,stoll,stoull,stof,stod,stoldund was sonst noch alles ...
Der erste Buchstabe bedeutet String, dann ist das Wort to und dann die ersten Buchstaben des Typs. Also zum Beispiel stoull -> string to unsigned long long.Zu den Streams:
Weiss eigentlich einer, was der Standard vorschreibt wegem dem Puffer? Wenn ich meinen Streams im VS2005 einen Puffer gäbe, dann habe ich die gleiche Geschwindigkeit wie beimprintf. Die Implementation scheint mir daher nur insofern schlecht zu sein, dass nicht per Default ein Puffer verwendet wird.Grüssli
-
Die Streamklassen von C++ machen alles gewünschte, einschliesslich geeigneter Manipulatoren für die Formatierung in <iomanip.h>, wie setw und setprecision. Für Umwandlungen von int nach hex sind itoa und ltoa geeignet. Die alten C-Funktionen für I/O braucht man dann nicht mehr.