Я новичок в C++, и у меня возникают небольшие проблемы с чтением строк данных из текстового файла. Допустим, у меня есть неизвестное количество строк в текстовом файле, причем каждая строка имеет один и тот же формат: int string double . Единственное, что будет определенным, это пробел, который будет разделять каждый фрагмент данных в данной строке. Я использую массив структур для хранения данных. Приведенный ниже код отлично работает, за исключением того, что он пропускает строку ввода после каждого цикла. Я пробовал вставлять различные операторы ignore() и до сих пор не могу заставить его читать каждую строку, только каждую вторую строку. Если я перепишу некоторые операторы getline в конце, то после первого цикла для переменных начнут сохраняться неправильные данные.
Текстовый файл может выглядеть так:
18 JIMMY 71.5
32 TOM 68.25
27 SARAH 61.4
//code
struct PersonInfo
{
int age;
string name;
double height;
};
//..... fstream inputFile; string input;
PersonInfo *people;
people = new PersonInfo[50];
int ix = 0;
getline(inputFile, input, ' ');
while(inputFile)
{
people[ix].age = atoi(input.c_str());
getline(inputFile, input, ' ');
people[ix].name = input;
getline(inputFile, input, ' ');
people[ix].height = atof(input.c_str());
ix++;
getline(inputFile, input, '\n');
getline(inputFile, input, ' ');
}
Я уверен, что есть более продвинутые способы сделать это, но, как я уже сказал, я довольно новичок в C++, поэтому, если есть небольшие изменения в приведенном выше коде, это было бы здорово. Спасибо!