Utilisation d'eof() dans l'entrée de fichier : une pratique controversée
Question :
Malgré son utilisation courante dans les programmes de saisie de fichiers, la fonction eof() a suscité la controverse. Si certains programmeurs le jugent acceptable, d’autres déconseillent fortement son utilisation. Cette question explore les raisons de cette fracture.
Réponse :
La fonction eof() a un objectif précis : identifier les tentatives de lecture au-delà de la fin d'un fichier. . Cependant, il s'agit d'un mauvais choix pour tester s'il reste des entrées supplémentaires ou si une opération de lecture a réussi, deux scénarios plus courants.
Pourquoi cela est considéré comme une mauvaise pratique :
Le La principale raison pour laquelle eof() est déconseillé est son ambiguïté. Il indique uniquement si une tentative de lecture au-delà de la fin du fichier a eu lieu. Il ne fournit pas d'informations indiquant si des données valides ont été réellement lues ou s'il y a d'autres données à traiter.
Exemple d'utilisation inappropriée :
Considérez l'utilisation incorrecte suivante :
while (!cin.eof()) { cin >> foo; }
Cette boucle suppose que eof() peut déterminer s'il reste une entrée à lire. Cependant, si une opération de lecture échoue pour une raison autre que l'atteinte de la fin du fichier (par exemple, format non valide), la boucle continuera indéfiniment.
Utilisation correcte :
Pour tester correctement la condition spécifique représentée par eof(), utilisez l'approche suivante :
if (!(cin >> foo)) { if (cin.eof()) { cout << "Read failed due to EOF\n"; } else { cout << "Read failed due to something other than EOF\n"; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!