C ++ lecture dans des segments spécifiques de données à partir d'un fichier redirigé vers mon programme

StackOverflow https://stackoverflow.com/questions/3805362

  •  25-09-2019
  •  | 
  •  

Question

Je travaille sur un programme qui prend un fichier redirigée en entrée. Par exemple, si mon programme a été appelé foo je qualifierais le programme avec ./foo < input.txt. Les fichiers que je suis en cours d'exécution à travers mon programme sont censés être mis en forme avec un seul entier sur la première ligne, deux entiers sur la deuxième ligne. Donc, quelque chose comme

3
1 8

Je trouve que certains des fichiers ont des caractères étrangers quoique sur la première ligne que je dois ignorer. Quelque chose comme

3 t
1 8

Je lisais dans les données simplement en faisant cin >> var >> var 2 >> var3; mais quand ce t supplémentaire est jeté dans le tout mélange vis de vers le haut. Quelle serait la meilleure façon de contourner ce problème? Est-il possible après que je cin la première variable lui dire de sauter le reste de la ligne? Ou devrais-je utiliser la fonction getline puis analyser en quelque sorte que? Merci.

Était-ce utile?

La solution

Si le fichier est de la forme

[number] garbage
[number] [number] garbage

et vous savez que les chiffres sont toujours dans la bonne position sur la ligne, puis j'utiliser std::getline() pour lire chaque ligne puis essayez de lire le nombre attendu d'entiers de chaque ligne que vous lisez.

Autres conseils

Oui, la manière évidente serait d'utiliser std::getline pour lire une ligne de texte, utilisez le std::string que vous obtenez de celui initialiser un std::istringstream, lire le nombre d'éléments de cette ligne, et répéter au besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top