mein Problem ist:
ifstream gibt mir nur 16 Elementeifstream gibt mir nur 16 Elemente
Hallo, In meinem C++ Code, den ich mehrere Klassen haben. Sie sind:
-Daten (Fügen Sie einige Zahlen)
-Towns (Fügen Sie mindestens 2 Daten -Objekte (in einem Vektor) und die Staatsname)
-County (Manage die Stadt -Objekte)
Das Programm sollte das Objekt Town mit den Daten einer bestimmten Datei füllen. Der Code sieht wie folgt aus:
COUNTRY.CPP:
Country::Country(string file) {
ifstream x(file);
Town t;
while (x.good()) {
x >> t;
this->towns.push_back(t);
}
}
Um tiefer zu bekommen -> die „>> t“ sieht wie folgt aus:
TOWN.CPP :
istream& operator>>(std::istream& is, Town& d) {
is >> d.state>> d.town;
Data a, b;
a.SetYear(2011);
is >> a >> b;
// Some other code was here - but i think it's not relevant
return is;
}
, tiefer zu bekommen -> die „>> a“ sieht wie folgt aus:
DATA.CPP:
istream& operator>>(std::istream& is, Data& d) {
return is >> d.total >> d.male >> d.female;
}
Wie Sie gesehen haben - die Städte in einer Datei sind. Die Struktur in der Datei wiederholen immer und immer wieder (insgesamt: 11.292) und sieht wie folgt aus:
SOURCE (Beispiel)
Baden-Württemberg
Kirchheim am Neckar
5225
2588
2637
5205
2608
2597
Baden-Württemberg
Kornwestheim
31053
15167
15886
31539
15502
16037
1. Zeile: Staatliche
2. Zeile: Stadt
3.-5 und 6. bis 8. Zeile: Daten
REPEAT
soo ... Und aus irgendeinem Grunde nur die ifstream gibt mir 16 Elemente (16 Tow ns). Hmmm ....
'Kirchheim am Neckar' - Der' std :: string :: operator >> 'liest nur bis zum ersten Leerzeichen.Vielleicht erhalten Sie deshalb nicht alle Ihre Daten, oder zumindest scheint dies ein Fehler beim Einlesen der Eingaben zu sein. Alles, was Sie bekommen würden, ist "Kirchheim" und nicht "Kirchheim am Neckar". – PaulMcKenzie