Моя проблема заключается в:
Ifstream дает мне только 16 элементовifstream дает мне только 16 элементов
Привет, В моей C++ код у меня есть несколько классов. К ним относятся:
-Data (Включите некоторые номера)
-Towns (Включить по крайней мере 2 данных -Объектов (в векторе), и название штата)
-County (Управление Тауна -Объектов)
Программа должна заполнить Город объект с данными данного файла. код выглядит следующим образом:
COUNTRY.CPP:
Country::Country(string file) {
ifstream x(file);
Town t;
while (x.good()) {
x >> t;
this->towns.push_back(t);
}
}
Чтобы получить более глубокое положение -> «>> т» выглядит следующим образом:
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;
}
Для того, чтобы получить более глубокое положение -> «>> A» выглядит следующим образом:
DATA.CPP:
istream& operator>>(std::istream& is, Data& d) {
return is >> d.total >> d.male >> d.female;
}
Как вы видели - городов в данном файле. Структура в файле повторяться снова и снова (в общей сложности: 11292) и выглядит следующим образом:
SOURCE (пример)
Baden-Württemberg
Kirchheim am Neckar
5225
2588
2637
5205
2608
2597
Baden-Württemberg
Kornwestheim
31053
15167
15886
31539
15502
16037
первая линия: Государственный
второй линии: Город
третий-пятый и шестой-восьмой линии: Данные
REPEAT
Су ... И по какой-то причине ifstream только дает мне 16 элементов (16 Tow нс). Hmmm ....
'Kirchheim am Neckar' -' 'std :: string :: operator >>' только читается до первого символа пробела.Возможно, именно поэтому вы не получаете все свои данные, или, по крайней мере, это, по-видимому, является недостатком в вашем чтении ввода. Все, что вы получите, это «Кирхгайм», а не «Кирххайм-ам-Неккар». – PaulMcKenzie