Мой текстовый файл выглядит следующим образом:прочитать файл построчно и хранить различные переменные
1 52 Hayden Smith 18:16 15 M Berlin
2 54 Mark Puleo 18:25 15 M Berlin
3 97 Peter Warrington 18:26 29 M New haven
4 305 Matt Kasprzak 18:53 33 M Falls Church
5 272 Kevin Solar 19:17 16 M Sterling
6 394 Daniel Sullivan 19:35 26 M Sterling
7 42 Kevan DuPont 19:58 18 M Boylston
8 306 Chris Goethert 20:00 43 M Falls Church
9 262 James Sullivan 20:12 28 M Sterling
10 348 Bill Gaudere 20:17 54 M Hudson
11 13 Travis Wheeler 20:23 31 M Clinton
12 69 Eric Anderson 20:34 54 M Clinton
13 341 Alex Teixeira 20:46 0 M Clinton
14 112 James Long 20:50 38 M 0
15 279 Nate Richards 21:31 17 M Berlin
......................................................
Есть восемь столбцов, разделенных «вкладки», кроме имени и фамилия отделяется пробелом.
У меня должно быть восемь различных типов переменных.
int a;
int b;
string c;
string d;
string e;
int f;
char g;
string h;
мне нужно прочитать файл построчно и каждая строка соиЬ это, б, в, г, д, е. Мне также нужны эти переменные для последующего использования.
Итак, я попытался это:
std::ifstream infile("text.txt");
int a;
int b;
string c;
string d;
string e;
int f;
char g;
string h;
while(infile>>a>>b>>c>>d>>e>>f>>g>>h)
{
cout <<"C is: "<<c<<endl; // just to see if the loop is working.
}
Мне не нужны массивы и векторы для хранения этих переменных, у меня есть сшитая структура. Прямо сейчас, мне просто нужен способ прочитать файл и сохранить эти строки и целые числа в переменных. Но это не работает, LOL. Не знаю, почему. Я также думал об использовании GetLine, что-то вроде этого:
while(getline(infield, s)):
Но, не это по сути просто дает мне одну большую жирную линию, со всеми строками и целыми числами разбили вместе.
Я не совсем уверен, можете ли вы сделать все в одной строке, но я бы посоветовал это сделать. При каждой записи, которую вы читаете, есть вероятность ошибки (например, неправильный тип). Я думаю, вы захотите написать код (или, по крайней мере, код отладки), который проверяет наличие ошибок. Кроме того, на самом деле это не дает большой производительности, делая это в одном выражении, а не в нескольких выражениях. – Nard
Рассмотрение формата файла в виде восьми столбцов - большая проблема с вашим подходом. Кто-то собирается вводить имена, такие как «Ли Харви Освальд» или «Барак Хусейн Обама», чтобы убить вашу программу. Нет, есть причина, по которой нет никакой вкладки между именем и вторым именем, и причина в том, что их следует рассматривать как один столбец. Кстати, это также работает с Нью-Хейвеном.BTW: Семейство форматов файлов называется CSV, хотя это вкладка не запятая здесь, и вы должны найти достаточную информацию в Интернете о ее разборе. –