Walka z STL-owymi strumieniami
• tech • 246 słów • 2 minuty czytania
Wielkim walorem języka C++ i STL-a są strumienie. Ale chyba nie przez wszystkich są tak bardzo lubiane.
Strumienie są bezpieczne i wygodne, szczególnie, gdy się je wykorzystuje w podstawowych “konfiguracjach”.
Niestety, gdy chce się zrobić z nimi coś więcej to pojawiają się schody. Na pewno są upierdliwe przy jakiejś “większej” potrzebie formatowania danych we/wy. A co gorsza, gdy potrzeba napisać własny strumień lub jakąś cześć własnej implementacji do tych standardowych strumieni to trzeba się nieźle nagimnastykować, i nie jest powiedziane, że się to uda.
Chciałem sobie napisać fajną klasę do logowania z możliwością dodawania wpisów operatorem <<
. Akurat tę część funkcjonalności bez zarzutu da się łatwo zaimplementować. Chciałem też mieć standardowe endl
do kończenia linii (flush-owania) loga i kilka innych “helperów”. I tutaj już pojawiały się schody, schody bez końca.
Tyle tych template’ów napakowane w STL-u, że nawet nie mogłem łatwo i prosto przeciążyć manipulatora endl
, czy choćby metody flush
wykonywanej przez endl
. Wkurzyłem się i na razie pozostałem przy prostszym wykonaniu.
To mnie utwierdza w moim braku “sympatii” do C++‘owych strumieni. Często łatwiej mi przychodzi użycie “starych” funkcji dostępnych w bibliotece C i to nie tylko do formatowania, ale często i do operowania na plikach. A gdy się je fajnie opakuje w jakieś proste interfejsy obiektowe to jest bajka ;)
A teraz była dobra okazja by to zmienić, by choć trochę polubić te strumienie. Niestety ta sytuacja tego nie zmieniła, a może nawet nieco pogorszyła, bo jeszcze bardziej się zniechęciłem do wykorzystywania strumieni w C++.
Komentarze (0)