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:
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
Pas de problème, on a le bon nombre de valeurs par ligne.


Par contre:
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
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
Ou plus vicieux:
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
Je lis le fichier de cette manière:
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
  }
}
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).
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.