Такая задача: имеется входной файл, который выглядит так:
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
-----------------------------------
Используй любой подходящий под задачу стандартный контейнер, 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
-----------------------------------
количество строк? while (!eof(fp))
Ну примерно так. Буду писать на Паскале а там уж перевести не особо трудно:
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.
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.
Похожие вопросы
- Скажите пожалуйста как передать данные из текстового файла в массив на php
- задача TurboPascal с текстовым файлом, помогите....
- Написать программу которая подсчитывает частоту встречаемости символов в заданном текстовом файле С++
- Извлечение ссылки из текстовых файлов
- Нужно получить массив слов из текстового файла
- Скопировать из текстового файла .txt часть строк c 1 по 3000, затем с 3000 по 6000 и так до конца файла.
- Есть ли какие-либо стандарты по упаковки потока данных для передачи файлов?
- Как подсчитать дубли строк в текстовом файле?
- Где хранятся данные, записываемые в файл?
- 4. Даны два текстовых файла. Записать в третий только те строки, которые есть и в первом, и во втором файлах.