Je profite d'avoir un blog pour cracher un peu de bile: je hais les iostream du c++, ce truc est la honte des flux d'IO (enfin pas tout a fait, il faudrait aussi aborder le cas du Fortran). En bref les iostream c'est:

  1. lourd: rien que les cout << "plop" << std::setw(10) << std::hex << i << "\n" ça me donne déjà envie de casser mon clavier, et pourtant je n'ai même pas essayé de formatter un nombre en virgule flottante.
  2. lent (plus lent que les io du C)
  3. pas integré avec la stl. Ok la stl est venue bien après, mais quand même... un std::fstream qui accepte les noms de fichier en std::string ça serait pas mal..
  4. imbitable et pas du tout extensible: c'est un comble ! comment on fait un flux qui lit depuis la mémoire ? qui dézippe à la volée ? qui crypte à la volée ? C'est affreusement compliqué, ça oblige à se plonger dans les streambuf qui sont un chef d'oeuvre d'obfuscation avec leurs fonctions aux noms evocateurs "xsgetn", "gbump", "setg". Pour faire un iostream qui dezippe il faut surcharger une dizaine de ces fonctions merdiques et c'est hyper compliqué. Résultat: chaque toolkit, chaque petite lib, construit sa propre classe de flux from scratch parce que c'est impossible de repartir des iostream. Bravo Stroustrup ! (en fait je crois que ce n'est pas lui qui a commit les iostream)
  5. autiste: y'a pas de diagnostique des erreurs ! pourtant en C, "strerror" c'est bien sympa pour savoir si on n'a pas pu lire toto.txt parce qu'il n'existe pas , ou bien parce qu'il y a un probleme de permissions. Avec les iostream on sait juste que c'est "fail", après demerde toi.

Alors oui, si il y a un truc que je conchie dans le c++, c'est bien ses iostreams.