7
votes

C ++ Lecture de plusieurs variables de la ligne de texte

Je suis tout à fait nouveau à C ++ et j'ai une question sur la lecture de données de fichier texte.

J'ai un fichier texte contenant des données définis comme celui-ci: xxx

et le code que j'utilise pour lire est xxx

mais parfois, le fichier aura des lignes qui ressemblent à: xxx

Je ne sais pas comment gérer ces entrées. Toute aide serait appréciée, s'il s'agit d'une question de répétition, veuillez relier l'original. Merci


2 commentaires

Vous pouvez aimer boost :: esprit . L'analyse est une entreprise complexe.


Si j'ai bien compris, vous voulez avoir accès à chaque variable du fichier texte?


4 Réponses :


2
votes

Lisez la ligne entière, recherchez le premier chiffre et divisez la ligne en deux sous-chaînes juste avant le premier chiffre. La première sous-chaîne est le nom et la seconde sous-chaîne contient les chiffres.

Comment vous gérez des noms avec plus de deux "mots" en eux, mais ce n'est pas si facile que cela puisse sembler que certains prénoms ne sont pas réellement appropriés, mais une partie du nom de famille (comme dans l'exemple de "Rob van Dam").

Les chiffres sont plus faciles, surtout si vous utilisez un std :: vecteur pour les stocker au lieu d'une matrice de taille fixe, vous pouvez simplement utiliser lire les entiers à partir d'un STD: : Istringstream à l'aide de l'opérateur d'entrée normal >>> dans une boucle et repoussez-la dans le vecteur.


0 commentaires

0
votes

std :: getline sets écheckbit s'il n'a lu aucun caractère pour quelque raison que ce soit.

donc, infile.fail () retournera true si échect a été défini, ce qui signifierait qu'il n'a pas lu les valeurs correctement (s'ils ne sont pas là par exemple).


0 commentaires

2
votes

Vous pouvez suivre le processus de pensée décrit ci-dessous

std::string line = "";
while(getline(file, line))
{
  //index = first occurrence of a digit
  //split the line at index - 1
  //left_line = names, right_line = numbers
  //further processing can now be done using the left_line and right_line
}


0 commentaires

6
votes

Voici cet esprit d'esprit que les gens ont Camoring pour Strike> suggéré: xxx pré>

L'astuce consiste à accepter des mots dans le nom du nom jusqu'à la première valeur de données ( ! int _ code> cette partie). p>

La règle d'enregistrement analyse dans enregistrement code>: p> xxx pré>

démo complète en direct h2>

Vivez sur Coliru kbd> strong> p>

The Undertaker;4;3;2;6;
John Cena;22;19;8;5;
Rob Van Dam;45;65;35;95;
Hitman Bret Hart;34;9;16;
Hulk Hogan;9;
Kurt Angle;5;9;33;17;


0 commentaires