Lire à partir d'un fichier en c++ jusqu'à la fin de la ligne?
Comment puis-je lire des données jusqu'à la fin de la ligne?J'ai un fichier texte "file.txt" avec cette
1 5 9 2 59 4 6
2 1 2
3 2 30 1 55
J'ai ce code:
ifstream file("file.txt",ios::in);
while(!file.eof())
{
....//my functions(1)
while(?????)//Here i want to write :while (!end of file)
{
...//my functions(2)
}
}
dans mes fonctions(2) - je utiliser les données de la lignes et il faut être de type Int ,pas de char
- Pourquoi avez-vous besoin de lire jusqu'à la fin de la ligne? Et par "fin de ligne", vous voulez dire la fin de la première ligne, ou à la fin de toutes les lignes?
- par "fin de ligne", je veux dire de lire la première ligne,utilisez les numéros pour faire ce que j'ai et aller sur la deuxième ligne...,puis sur la troisième ligne jusqu'à la fin du fichier
- Êtes-vous d'effectuer les mêmes opérations sur chaque ligne?
- oui
- Effectuez l'une des réponses actualisées de l'aide? Merci de donner de la rétroaction.
- Non,ils n'aident pas. le code qui herohuyongtao écrit des œuvres incorrect. je le répète:je veux prendre un par un les elemnts de la 1ère ligne jusqu'à la fin et faire des activités avec eux. Puis je faire la même chose et les mêmes opérations avec la 2ème ligne ....
- Au contraire, ce que vous avez décrit est extactly ce herohuyongtao code ne. Peut-être que vous devriez expliquer ce que tu crois que son exemple ne mal?
- Je voudrais soumettre une réponse, mais d'abord j'ai besoin de savoir plus d'informations sur ce que vous essayez de faire. herohuyongtao la réponse passe par chaque ligne, puis utilise une chaîne de stream pour itérer sur les entiers de cette ligne. Si ce n'est pas satisfaisant pour vous, j'aurais besoin d'avoir plus de détail sur ce que cherche à faire.
- herohuyongtao de réponse est de retourner des valeurs aléatoires je prends les éléments un par un, et le résultat est 1 2 3 2 30 1 55 1... comment est-ce arrivé?je pense qu'il doit avoir une autre solution
- cet exemple, son code fonctionne comme prévu. Le code posté il y diffèrent de votre code?
- ok,maintenant ça marche ,merci beaucoup.
- Pas de problème. 🙂
Vous devez vous connecter pour publier un commentaire.
Ne pas utiliser
while(!file.eof())
commeeof()
ne sera définie après la lecture de la fin du fichier. Il n'indique pas que la prochaine lecture sera la fin du fichier. Vous pouvez utiliserwhile(getline(...))
la place et de les combiner avecistringstream
de lire les numéros.Vous avez besoin de lire Pourquoi est-iostream::eof à l'intérieur d'une condition de boucle considéré comme mauvais?.
getline()
à les diviser.Comme pour la lecture jusqu'à la fin de la ligne. il y a
std::getline
.Vous avez un autre problème, c'est que vous boucle
while (!file.eof())
qui seront les plus susceptibles de ne pas fonctionner comme prévu. La raison en est que laeofbit
option n'est pas activée jusqu'à ce que après vous essayez de lire à partir d'au-delà de la fin du fichier. Au lieu de cela, vous devriez faire par exemplewhile (std::getline(...))
.std::string
, mettre dans unstd::istringstream
, boucle à l'aide de l'opérateur d'entrée>>
pour obtenir à chaque espace délimité par valeur.std::istringstream
, utiliser lesstd::copy
std::istream_iterator
pour mettre les valeurs directement dans un container en utilisantstd::back_inserter
.Si vous voulez l'écrire comme une fonction pour faire un appel à un autre endroit, vous pouvez utiliser un vecteur. C'est une fonction que j'utilise pour lire un tel fichier, et retourner entiers élément sage.