/ / Lecture jusqu'à la fin d'une ligne en C ++ - c ++, fichier

Lecture jusqu'à la fin d'une ligne en C ++ - c ++, fichier

J'ai un fichier texte comme celui-ci:

Sting Une autre chaîne 0 12 0 5 3 8
Sting Une autre chaîne 8 13 2 0 6 11

Et je veux compter le nombre de numéros. Je pense que mon meilleur pari est d'utiliser tout en tapant cycle avec une condition pour terminer le comptage puis une autre ligne commence mais je ne sais pas comment arrêter la lecture à la fin d'une ligne.

Merci d'avance pour votre aide ;)

Réponses:

11 pour la réponse № 1

Divisez votre input diffuser en lignes

std::string line;
while (std::getline(input, line))
{
// process each line here
}

Pour diviser une ligne en mots, utilisez un flux de chaînes:

std::istringstream linestream(line); // #include <sstream>
std::string word;
while (linestream >> word)
{
// process word
}

Vous pouvez répéter cette opération pour chaque mot pour décider s'il contient un nombre. Puisque vous n'avez pas précisé si vos nombres sont entiers ou non entiers, je suppose int:

std::istringstream wordstream(word);
int number;
if (wordstream >> number)
{
// process the number (count, store or whatever)
}

Avertissement: Cette approche n'est pas parfaite. Il détectera les "nombres" au début de mots comme 123abc, il permettra également un format d'entrée comme string 123 string. De plus, cette approche n'est pas très efficace.


4 pour la réponse № 2

Pourquoi ne pas utiliser un getline()?


1 pour la réponse № 3

La fin de ligne est représentée par le caractère "n". Mettez une condition dans votre boucle while pour qu'elle se termine lorsqu'elle rencontre "n"