Accéder aux messages d'erreur en C lors de l'ouverture d'un fichier à l'aide d'ifstream peut être difficile. Pour résoudre ce problème, examinons les techniques permettant d'extraire la raison de l'erreur.
La méthode standard pour vérifier les erreurs d'ouverture de fichier est :
ifstream f; f.open(fileName); if ( f.fail() ) { // I need error message here, like "File not found" etc. - // the reason of the failure }
En C , lorsqu'un appel système échoue, il met à jour la variable globale errno. Par conséquent, vous pouvez obtenir des détails supplémentaires sur les échecs d'ouverture d'ifstream en utilisant errno :
ifstream f; f.open(fileName); if ( f.fail() ) { cerr << "Error: " << strerror(errno); }
Notez que errno est une variable globale. Dans les applications multithread, vous devez être prudent. Si un autre appel système déclenche une erreur entre l'exécution de f.open() et l'utilisation de errno, cela pourrait affecter l'exactitude du message d'erreur.
Sur POSIX- systèmes compatibles, errno est thread-local. Cela implique que la définition de errno dans un thread n'a pas d'impact sur sa valeur dans aucun autre thread.
À l'origine, e.what() semblait être une fonction plus Approche C appropriée pour récupérer les informations sur les erreurs. Cependant, cette fonction renvoie une chaîne spécifique à l'implémentation. Dans la libstdc de G, cette chaîne fournit souvent peu d'informations significatives sur l'échec.
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!