Другие языки программирования и технологии

Считывание данных из текстового файла С++

Такая задача: имеется входной файл, который выглядит так:
DFR22 Petersburg 18 22
GD24 Madrid 14 55
HTU45 Berlin 11 38
Как используя потоки записать эти данные в несколько разных массивов?
P.S. длина строк разная, <код самолета> <город вылета> <часы> <минуты> кол-во строк не известно

Хотя настоящая проблема в том, что не знаю как узнать количество строк в файле и, следовательно, не могу узнать размерность будущих массивов
> Хотя настоящая проблема в том, что не знаю как узнать количество строк в файле и, следовательно, не могу узнать размерность будущих массивов
Используй любой подходящий под задачу стандартный контейнер, std::vector например.

#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

struct Flight {
string code;
string dest;
int hour;
int minute;
};

int main() {
vector < Flight > fls;
fstream in("data.txt");
while ( in.good() ) {
Flight fl;
if (in >> fl.code >> fl.dest >> fl.hour >> fl.minute) {
fls.push_back(fl);
}
}
for (int c = 0; c < fls.size(); ++i) {
cout << setw(10) << fls[c].code << setw(15) << fls[c].dest
<< setw(4) << fls[c].hour << ":" << fls[c].minute << endl;
}
}

Содержимое data.txt, соответственно:
------------------------------------
DFR22 Petersburg 18 22
GD24 Madrid 14 55
HTU45 Berlin 11 38
-----------------------------------
Андрей Трунов
Андрей Трунов
79 586
Лучший ответ
количество строк? while (!eof(fp))
Miras Shaganov
Miras Shaganov
34 293
Ну примерно так. Буду писать на Паскале а там уж перевести не особо трудно:
1. Заводим переменную счетчик, переменную типа строка и переменную типа файл. Пусть будет
var i:integer;
f:file;
buf:string;
2. Привязываем переменную файл, открываем его и обнуляем счётчик.
file:=Assign(Путь к файлу) ;
i:=0;
3. Создаем цикл подобный этому
While not(EOF(file)) do begin
buf:=readln(file);
i:=i+1;
end;

Примерно так. Только за ошибки не ручаюсь давно с файлами не работал. Результат в i.