2010-11-29 4 views
1

Question rapide simple. Quel est le meilleur moyen de lire dans un tableau de valeurs flottantes que vous ne savez pas combien de temps ils seront? (Cependant, nous savons qu'il ne sera pas plus de 75 entiers longs)C++ simple fichier lu dans le tableau question

Disons que j'ai un fichier (derp.txt) et les entiers sont 5,3 6,2 1,5 5,0 1,4 4,5 ..... etc

et je veux les mettre dans les numéros de tableau [75]; Quelle est la meilleure façon de le faire en C++ (et si vous vous sentez impressionnant C)

Je pensais que ce serait une combinaison de chaînes et getline, mais je ne suis pas familier avec les chaînes du tout.

edit: j'ai oublié de le mentionner. Après ce tableau est un autre 2 numéros qui DonT appartiennent dans ce tableau (ils sont faciles à lire) donc en gros j'ai juste besoin de lire jusqu'à la fin de la ligne

Répondre

8
std::vector<double> results; 
std::copy(std::istream_iterator<double>(std::cin), 
      std::istream_iterator<double>(), 
      std::back_inserter(results)); 

Vous pouvez remplacer std::cin avec ce flux que vous sont en train d'utiliser.

Il est un peu plus compliqué à lire dans un tableau, mais vous ne voulez probablement pas utiliser un tableau de toute façon; vous avez dit que vous ne savez pas combien de temps la liste de valeurs sera, alors comment savez-vous que 75 est la taille correcte pour le tableau? Avec std::vector, vous n'avez pas ce problème.

+1

Pour ajouter à cette réponse: il suffit d'utiliser un ifstream au lieu de std :: cin et vous êtes prêt à partir. –

+0

Attendre im confused ...... comment cette fonction sait copier jusqu'à la fin de ligne/ –

+0

@Mercfh, il copie à la fin du flux, cela et la fin de la ligne peut être ou ne pas être la même ... – Nim