stdio vs iostream
Quand je fais une recherche sur internet pour la différence entre ces deux bibliothèques, tout le monde dit que <iostream>
est le standard de la bibliothèque d'e/S de C++ et de <cstdio>
est pour C. Mon professeur dit que cin>>
et cout<<
ne sont pas de bonnes fonctions et si nous utilisons cin>>
de nombreuses fois, notre application va certainement crash. Il dit aussi que stdio
fournit près de 3 fois plus rapidement entrée et de sortie de iostream
. Cependant, je préfère utiliser iostream
car c'est plus pratique, et aussi je ne sais pas si mon professeur est droit.
De sorte que conseillez-vous de moi?
source d'informationauteur Sam379
Vous devez vous connecter pour publier un commentaire.
À l'aide de
iostream
ne devrait pas faire de votre plantage du programme. Il peut être lent, mais c'est seulement parce qu'il essaie d'interagir avecstdio
. Cette synchronisation peut être désactivé1.iostream
est le idiomatiques C++ manière d'obtenir l'entrée, et je le recommande son utilisation surstdio
fonctions dans la plupart des cas lors de l'utilisation de C++.1 à l'aide de
std::ios::sync_with_stdio(false);
Utiliser les flux en C++ et stdio.h en C.
Oui, les ruisseaux sont un peu plus lent, mais ceux millisecondes comte? La saisie de l'utilisateur est rarement un goulot d'étranglement d'une application.
Et si les flux sont utilisés correctement, et que votre compilateur/bibliothèques d'exécution sont ok, votre demande ne crash.
Mais, si vous avez de bonnes, d'expliquer les raisons de l'utilisation d'
cstdio
fonctions, alors il est légitime de les utiliser en C++.Moins que l'exercice de l'I/O est VRAIMENT important, utilisez celui qui rend votre programme la plus claire (plus facile à lire).
Dans le grand nombre de programmes que j'ai écrits, seuls quelques-uns ont besoin d'un traitement spécial "a quelle vitesse le I/O est" - et la plupart des problème avec
std::stream
fonctions a avec l'analyse de l'entrée [ainsi que la synchronisation avec stdio] - qui, si vous êtes à la lecture, disons, des nombres à virgule flottante, sera très difficile à écrire votre propre version de [qui accepte la gamme complète de formats questd::stream
permet].Si les performances I/O, puis à l'aide de
std::stream::read
etstd::stream::write
peut être la solution, mais dans la plupart des cas, la meilleure performance est obtenue à l'aide de la non-portablemmap
etMapViewOfFile
interfaces "à la carte" le contenu d'un fichier directement depuis le système de fichiers de la mémoire virtuelle de l'application. Cela permet d'économiser sur le montant de la copie, le traitement des données prend, et le rendre un peu plus rapide.La iostreams bibliothèque est probablement plus lent que le niveau inférieur de la bibliothèque stdio. Flux de fait beaucoup plus sous le couvre - conversions de type, la localisation, la gestion des exceptions, etc.