Doublons possibles:
Std :: ifstream est-il beaucoup plus lent que FILE?
Quelle bibliothèque d’E / S utilisez-vous dans votre code C ++?
Je me demandais quels sont les avantages ou les inconvénients de l’utilisation de Fstream sur FILE en C ++?
Le seul pro que je pense est que FILE est plus efficace que fstream.
On est C et on est C ++. Tomate, tomate. (Cette expression ne fonctionne pas aussi bien lorsque vous l’écrivez.) J’imagine qu’il est peu probable que vous constatiez une différence de performances.
Une personne très inclinée en C ++ et anti-C vous dira probablement quelque chose comme si vous fstream
gérer plus facilement différents types. Avec FILE
vous avez deux options: traiter en octets ou en chaînes de format. Depuis printf
ou fwrite
et al. Je ne sais pas quel est le “vrai” type d’arguments, cela facilite les choses. Il y a aussi le fait qu’une classe C ++ aura un destructeur et donc vous obtenez le nettoyage “gratuitement” lorsque l’object sort de la scope. (Bien que … Voulez-vous vraiment que quelque chose comme fflush
se produise en silence chez un destructeur? Probablement pas.) À ce genre d’arguments, je dirais que l’utilisation de FILE
n’est pas vraiment un fardeau, mais bon, certaines personnes pensent plus fortement que moi sur ces questions.
En fin de compte, votre application tente de faire exactement ce que vous tentez de faire, et il se peut que FILE
, fstream
, ou les deux, fstream
à vos besoins.
Choisissez ce qui fonctionne, soyez flexible avec ce que les autres choisissent, comprenez les arguments et ne devenez pas trop religieux à ce sujet. C’est mon conseil. 🙂
Imaginer:
vide lu (istream & istr)
Nous pourrions passer dans un ifstream, un istrstream ou même un cin. Ceci est très utile pour les tests unitaires.
std::fstream
est typé, prend en charge l’internationalisation et est plus facile à utiliser (warning: avis).
Quand un std::fstream
sort de sa scope, il est détruit pour vous, que vous ayez ou non oublié de le fstream::close()
.