Flux qui ne marche plus apres erreur c++
Fermé
ascvbnxw
Messages postés
2
Date d'inscription
mercredi 14 mars 2012
Statut
Membre
Dernière intervention
14 mars 2012
-
14 mars 2012 à 16:30
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 16 mars 2012 à 08:11
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 16 mars 2012 à 08:11
A voir également:
- Flux qui ne marche plus apres erreur c++
- Erreur 0x80070643 - Guide
- Erreur 10016 epson - Forum Imprimante
- Erreur g030 - Forum Bbox Bouygues
- Erreur c2002 western union ✓ - Forum Vos droits sur internet
- Erreur 1001 outlook - Guide
4 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
14 mars 2012 à 16:47
14 mars 2012 à 16:47
entree.open ("F_parametre.txt", ios ::out|ios:: app);
je ne comprend pas ce que tu cherches à faire tu défini un flux entrant mais tu lui dit que tu veux ecrire dedans (out). Ensuite, normalement ios::app te place à la fin du fichier, tu ne peux donc plus lire sur ce flux. Utilise ios::in, c'est plus logique.
Le mieux est de tester le flux après avoir fait le open. Comme ça, tu détecte les erreurs de chemin ou de fichier.
je ne comprend pas ce que tu cherches à faire tu défini un flux entrant mais tu lui dit que tu veux ecrire dedans (out). Ensuite, normalement ios::app te place à la fin du fichier, tu ne peux donc plus lire sur ce flux. Utilise ios::in, c'est plus logique.
Le mieux est de tester le flux après avoir fait le open. Comme ça, tu détecte les erreurs de chemin ou de fichier.
ascvbnxw
Messages postés
2
Date d'inscription
mercredi 14 mars 2012
Statut
Membre
Dernière intervention
14 mars 2012
14 mars 2012 à 17:38
14 mars 2012 à 17:38
Merci pour ta réponse, je vais changer ça, mais comment fait on t on pour tester le flux apres le open pour détecter les erreurs de chemin ou de fichier ?
Je voudrais également savoir s'il n'y a pas un autre moyen de récupérer mes variables et de tester leurs type une par une de manière à mieux gerer les erreurs. Parce que je ne trouve pas la solution à mon problème avec cette manière de récupérer mes variables.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
16 mars 2012 à 08:11
16 mars 2012 à 08:11
pour tester un flux en C++, il suffit de faire "if(flux)" ou d'utiliser fail() comme tu l'as fait.
https://en.cppreference.com/w/cpp/io/basic_fstream
Tu devrais trouver dans ce lien ton bonheur.
ça n'as pas trop de sens de tester un type sur une lecture de fichier. Un fichier ce n'est qu'une suite de 0 et de 1, ce que tu fais c'est interpréter cette suite d'une certaine manière. Ainsi, tel que tu ouvres ton fichier tu considère que tu fais des paquets de 8 et que tu lit des caractères. Ensuite, le C++ a un mécanisme pour interpréter et transformer les chaines de caractères en nombre.
Donc, si tu lui demandes de remplir un nombre et que tu lui fourni que des lettres, il y aura une erreur de conversion, pas forcément une erreur de flux.
Si tu veux tester un type, tu n'as pas beaucoup de choix, tu récupères des string que tu traite dans le sens que tu veux.
https://en.cppreference.com/w/cpp/io/basic_fstream
Tu devrais trouver dans ce lien ton bonheur.
ça n'as pas trop de sens de tester un type sur une lecture de fichier. Un fichier ce n'est qu'une suite de 0 et de 1, ce que tu fais c'est interpréter cette suite d'une certaine manière. Ainsi, tel que tu ouvres ton fichier tu considère que tu fais des paquets de 8 et que tu lit des caractères. Ensuite, le C++ a un mécanisme pour interpréter et transformer les chaines de caractères en nombre.
Donc, si tu lui demandes de remplir un nombre et que tu lui fourni que des lettres, il y aura une erreur de conversion, pas forcément une erreur de flux.
Si tu veux tester un type, tu n'as pas beaucoup de choix, tu récupères des string que tu traite dans le sens que tu veux.