Frank Schönmann: C++: aus Interger oder Long einen String machen

Beitrag lesen

hi!

Ist das so überhaupt ok? (es geht nur um die Konvertierung, nicht um die
Zeitrechnung!)

Deine Variable "ausgabe" brauchst du nicht, sondern kannst stattdessen
am Ende der Funktion gleich "return ausgabestream.str()" schreiben.

Wie legt C++ den String fest, der ausgegeben wird? Wird der auf dem heap
angelegt und nur ein Zeiger darauf übergeben?

Das ist fuer dich unerheblich, was ja gerade einer der grossen Vorteile
von C++-Strings im Vergleich zu C-Strings sind. Aber du kannst davon
ausgehen, dass der String intern auf dem Heap angelegt wird, da die Laenge
ja zur Compile-Zeit nicht bekannt ist.

Außerdem hat die Formatierung mittels der IOManip-Filter setw(2) nicht
funktioniert. Da wurde der gesamte String auf 2 Zeichen beschränkt. Er
muss abgeschnitten worden sein. Erst nachdem ich fill('0') hinzugefügt
habe, hat es erwartungsgemäß funktioniert ( 00:43:13 ). Woran kann das
liegen?

Das kommt mir komisch vor. setw() legt die minimale Laenge der naechsten
Einfuegung in den Stream fest. fill() gibt es so gar nicht, wie du es in
deinem Code angegeben hast. Entweder musst du setfill() an der Stelle
verwenden, oder vorher bereits cout.fill(). Damit legt man das Zeichen fest,
mit dem der Stream gefuellt wird, um die angegebene Laenge zu erreichen.

Wenn das bei dir anders funktioniert, solltest du mal ein funktionierendes
Beispiel angeben, das den von dir beschriebenen Effekt zeigt.

bye, Frank!

--
Never argue with an idiot. He will lower you to his level and then
beat you with experience.