anfängerfrage zu facetten
-
hallo
ich habe eine klasse geschrieben, die man nun mit dem operator<< ausgeben kann. damit es exceptionsafe ist, schreibe ich zunächst alles in einen stringstream und gebe dann dem echten stream den str des stringstreams aus, logisch.
nun hab ich mich aber entschieden, eine eigene facette zu schreiben damit das ganze ein wenig schöner aussieht:
struct CustomFacet : public ::std::numpunct<char> { // ... }; ::std::stringstream Printer; Printer.flags(Stream.flags()); // Stream ist der erste Parameter von operator<< Printer.imbue(::std::locale(Stream.getloc(), new Separated)); Printer.precision(Stream.precision());das habe ich so in etwa bei meiner recherche gefunden (auf stackoverflow). nun sieht aber diese manuelle alloziierung für mich schon recht suspekt aus. bei den 2 / 3 listings die ich gefunden habe, wurde es genau so gemacht, ohne delete oder smartptr. leakt der gezeigte code? soll ich da einfach einen unique_ptr nehmen der die gleiche lebenszeit wie der stringstream hat?
gruss und schöne feiertage im voraus
-
asfdlol schrieb:
leakt der gezeigte code?
Nein. Facetten sind refcounted (siehe z.B. da).
Um dir mal meine Meinung zu sagen: Das Design der IO-Streams ist so verkrüppelt, dass ich es mir es gar nicht erst antun würde. Die Streams sind langsam, monolithisch (1 Klasse hat 1000 Aufgaben, facet hat z.B. eingebautes Refcounting, was überhaupt nicht zu ihrem Aufgabenbereich gehört) und ziemlich veraltet.
-
refcounted schrieb:
asfdlol schrieb:
leakt der gezeigte code?
Nein. Facetten sind refcounted (siehe z.B. da).
alles klar, danke.
refcounted schrieb:
Um dir mal meine Meinung zu sagen: Das Design der IO-Streams ist so verkrüppelt, dass ich es mir es gar nicht erst antun würde. Die Streams sind langsam, monolithisch (1 Klasse hat 1000 Aufgaben, facet hat z.B. eingebautes Refcounting, was überhaupt nicht zu ihrem Aufgabenbereich gehört) und ziemlich veraltet.
gibt es für c++ ernstzunehmende alternativen?