2016-09-19 8 views
0

Ich versuche zu lesen, wie viele Zahlen in einer Textdatei sind, da die Summe nicht definiert wurde. Was ich versuche, ist eine While-Schleife zu schreiben, die die Datei liest, bis keine Elemente mehr zu lesen sind. Und innerhalb der while-Schleife liest cin die Elemente ein und wird zurück in die Vektordaten geschoben. Aber "i" ist nicht im Umfang definiert. Wie deklariere ich es im Rahmen oder gibt es einen besseren Ansatz dafür?Wie im Umfang deklarieren?

void read_vector(vector<int> &data) { 

    cout << "Using read function!" << endl; 
    //int i = data.size(); 
    while (data.size() != 0){ 
     cin >> data[i]; 
     data.push_back(data[i]); 
    } 

} // read_function() 

Vielen Dank für die Hilfe im Voraus!

+0

Voted zum Schließen als unklar. Ich würde * raten *, dass beide Versuche der Antworten bisher richtig sind. Aber der vorgestellte Code macht so wenig Sinn, dass es alles Mögliche sein könnte. –

+0

Wenn Sie aus einer Datei lesen, warum 'cin'? – user4581301

Antwort

2

Wenn Sie nicht wissen, wie viele Zahlen in der Eingabe vorhanden sind, können Sie while(cin>>temp) verwenden, um die ganze Zahl zu lesen, bis EOF oder ein ungültiges Token (keine Ganzzahl) erreicht wird. Sie brauchen also die Variable i nicht. Erstellen Sie einfach eine temporäre int lesen Sie den Eingang und push_back es in die vector.

int temp; 
while (cin>>temp){ 
    data.push_back(temp); 
} 
+4

Das ist Ratespiel und sollte ein Kommentar sein. –

+0

@CaptainGiraffe: Nein, Kommentare sind * nicht * für Vermutungen, außer Vermutungen, die mehr Informationen für eine spätere Antwort liefern können (und nicht genug sind, um das Problem selbst zu lösen). Versuchte Antworten, Ratespiele oder andere Fragen dienen nur der Beantwortung von Fragen, bei denen sie falsch beantwortet werden können. –

0

Wenn Sie möchten, eine Variable deklarieren und initialisieren i genannt, dann tun Sie

int i = 0; 

Allerdings wird data[i] nicht funktionieren, weil es noch keine Elemente in dem Vektor sind. Sie müssen data.push_back() verwenden, um die Elemente hinzuzufügen. Da Sie push_back() Elemente am Ende der Liste hinzufügen, benötigen Sie die Indexvariable überhaupt nicht. Die Deklaration ist also ohnehin überflüssig.

+1

"Es gibt noch keine Elemente im Vektor" ist reine Vermutung. Ihre Telepathie-Schaltung kann natürlich besser sein als meine, die leider nicht funktioniert. Aber ich bezweifle es, da es der gleiche Hersteller ist. –

+0

@ Cheersandthth.-Alf Das scheint mir sehr wahrscheinlich, da das OP schreibt eine Funktion zum Lesen von Daten in den Vektor. –