2010-11-29 15 views
1

Einfache schnelle Frage. Was ist der beste Weg, um ein Array von Float-Werten zu lesen, von denen Sie nicht wissen, wie lange sie sein werden? (Allerdings wissen wir, es wird nicht mehr als 75 Zahlen lang sein)C++ einfache Datei eingelesen zu Array Frage

Lets sagen, dass ich eine Datei (derp.txt) haben und die ganzen Zahlen sind 5,3 6,2 1,5 5,0 1,4 4,5 ..... etc

und ich möchte sie in Array-Nummern [75]; Was ist der beste Weg, dies in C++ zu tun?

Ich dachte, es wäre eine Kombination aus Stringstreams und getline, aber ich bin überhaupt nicht mit Stringstreams vertraut.

edit: ich habe vergessen, dies zu erwähnen. Nach dieser Anordnung ist eine weitere 2-Nummern, die in diesem Array gehören nicht (sie sind leicht zu lesen in) so im Grunde muss ich nur

bis zum Ende der Zeile lesen

Antwort

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

Sie std::cin mit welchem ​​Strom Sie ersetzen können benutzen tatsächlich.

Es ist etwas unordentlicher, in ein Array zu lesen, aber Sie wollen wahrscheinlich kein Array verwenden; Sie haben gesagt, dass Sie nicht wissen, wie lange die Liste der Werte sein wird, woher wissen Sie, dass 75 die richtige Größe für das Array hat? Mit std::vector haben Sie dieses Problem nicht.

+1

Um diese Antwort hinzuzufügen: Verwenden Sie einfach ein ifstream anstelle von std :: cin und Sie sind gut zu gehen. –

+0

Warte ich verwirrt ... wie kann diese Funktion kopieren, bis zum Ende der Zeile/ –

+0

@Mercfh, kopiert es an das Ende des Streams, dass und das Ende der Zeile kann oder nicht dasselbe sein ... – Nim