Проблема такая: есть файл, где данные записаны сплошным столбиком. Сначала имя, потом возраст. Данный кусок кода должен это всё дело считать с файла и записать в массив, с чем он справляется, но не так, как было задумано автором. Непонятно откуда берётся строка без текста и с 0. Если ввести размер не 3, а 5, то выводит что нужно, но с этими пустыми. Как я понял, оно их берёт из неоткуда и учитывает. Код функции ниже.Прошу, помогите!!!!!!
struct slist* getListfromFile(struct slist*& aol, string path, int size)
{
path = getFilePath();
fstream ListFile(path, fstream::in);
for (int i = 0; i < size; i++)
{
getline(ListFile, aol[i].name);
ListFile >> aol[i].score;
ListFile.clear();
}
ListFile.close();
return aol;
}
картинка с файлом
После считывания числа из файла
ListFile >> aol[i].score;
перевод строки остаётся не прочитанным, и будет прочитан на следующей итерации цикла гетлайном. После считывания числа просто игнорируй остаток строки
for (int i = 0; i < size; i++)
{
getline(ListFile, aol[i].name);
ListFile >> aol[i].score;
ListFile.clear();
ListFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
Пример на https://ideone.com/
Есть строка, в которой встречаются такие вещи, как ((число)
Как отфильтровать по русскому алфавиту значения одной из нескольких переменной, которые выводятся через цикл foreach?