mon problème est:
ifstream me donne seulement 16 élémentsifstream me donne seulement 16 éléments
Salut, Dans mon C++ code que j'ai plusieurs classes. Ils sont:
-Data (Inclure quelques chiffres)
-Towns (Inclure au moins 2 données -Objets (dans un vecteur), et le nom d'État)
-conseiller (la Ville Manage -Objets)
Le programme doit remplir l'objet Town avec les données d'un fichier donné. Le code ressemble à ça:
COUNTRY.CPP:
Country::Country(string file) {
ifstream x(file);
Town t;
while (x.good()) {
x >> t;
this->towns.push_back(t);
}
}
Pour obtenir plus profond -> le « >> t » ressemble à ceci:
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;
}
Pour obtenir plus profond -> le « >> un » ressemble à ceci:
DATA.CPP:
istream& operator>>(std::istream& is, Data& d) {
return is >> d.total >> d.male >> d.female;
}
Comme vous avez vu - les villes sont dans un fichier donné. La structure de la répétition de fichiers maintes et maintes fois (au total: 11292) et ressemble à ceci:
SOURCE (exemple)
Baden-Württemberg
Kirchheim am Neckar
5225
2588
2637
5205
2608
2597
Baden-Württemberg
Kornwestheim
31053
15167
15886
31539
15502
16037
1ère ligne: Etat
2ème ligne: Ville
3ème-5ème ET 6ème-8ème ligne: les données
REPEAT
soo ... Et pour une raison quelconque le ifstream me donne seulement 16 éléments (16 Tow ns). Hmmm ....
'Kirchheim am Neckar' - L'opérateur' std :: string :: operator >> 'lit uniquement le premier caractère d'espace blanc.C'est peut-être pourquoi vous n'obtenez pas toutes vos données, ou du moins cela semble être une faille dans votre lecture de l'entrée. Tout ce que vous obtenez est «Kirchheim» et non «Kirchheim am Neckar». – PaulMcKenzie