Bonjour,
Je cherche à lire un fichier texte ligne par ligne pour récupérer les valeurs contenues dans ce fichier et effectuer des calculs avec.
Le problème n'est pas la lecture du fichier en soi mais la difficulté de gérer les cas où le fichier n'aurait pas le format attendu (typiquement nombres de valeurs par ligne différent ou caractères parasites dans le fichier).
Si on a un fichier de cette forme:
Pas de problème, on a le bon nombre de valeurs par ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 3.14 0 1.51 2.28 1 0.3 2.25 1.14 3.2 5.5 6.2 0.1 4.1 0 2.3 3.2
Par contre:
Ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 3.14 0 1.51 // manque une valeur à cette ligne 1 0.3 2.25 1.14
Ou plus vicieux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 3.14 0 1.51 2.28 1 0.3 2.25 1.14 3.2 5.5 // deux valeurs en trop sur cette ligne
Je lis le fichier de cette manière:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 3.14 0 1.51 2.28 1 0.3 2.25 1.14 3.2 5.5 6.2 0.1 4.1 0 2.3 3.2 // j'ai ajouté un espace à la fin de cette ligne
Ce code marche si j'ai le bon nombre de valeurs par ligne et si la dernière ligne ne se finit pas par un espace (sinon un tour de boucle supplémentaire avec des valeurs aléatoires).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 while(!(m_file.getStream().eof())) { // je lis une ligne du fichier et récupère les valeurs initializeParameters(); // test des valeur lues if(hasValideParameters()) { // j'effectue mes calculs avec ces valeurs } }
Je souhaiterais donc vérifier de manière simple que le fichier d'entrée soit bien "formaté".
Je ne sais pas si c'est suffisemment clair.
Merci de votre aide.
Partager