On Thursday, 27 June 2013 at 02:25:54 UTC, Andrei Alexandrescu wrote:
On 6/26/13 2:47 PM, Paulo Pinto wrote:
Am 26.06.2013 20:52, schrieb H. S. Teoh:
On Wed, Jun 26, 2013 at 08:08:08PM +0200, bearophile wrote:
An interesting blog post found through Reddit:

http://randomascii.wordpress.com/2013/06/24/two-years-and-thousands-of-bugs-of-/

[...]
The most common problem they find are errors in the format string of
printf-like functions (despite the code is C++):

None of my C++ code uses iostream. I still find stdio.h more comfortable to use, in spite of its many problems. One of the most annoying features of iostream is the abuse of operator<< and operator>> for I/O. Format strings are an ingenious idea sorely lacking in the iostream department (though admittedly the way it was implemented in stdio is rather unsafe,
due to the inability of C to do many compile-time checks).

I have been an adept of iostreams since day one and never understood why people complain so much about them or the operator<< and operator>>
for that matter.

The problems with C++ iostreams are well-known and pernicious:

1. Extremely slow by design.

2. Force mixing representation with data by design

3. Keep conversion state within, meaning they force very bizarre tricks even for simple things such as printing/scanning hex numbers.

4. Approach to exception safety has the wrong default.

5. Approach to internationalization (locales) has the most byzantine design I've ever seen. Even people who took part to the design can't figure it all out.


Andrei

I always liked their OO model and for the type of applications we use performance never was a problem.

My iostreams experience is mostly coupled to serialization of data structures, simple console applications.

Exception safety might be an issue, sadly I was never able to write portable C++ code at work that used either RTTI or exceptions. Just too many issues, which always lead to the architects forbidding their use.

Thanks for the explanation.

--
Paulo


Reply via email to