Читает строки из файла через раз [дубликат]

160
13 июня 2022, 05:00
На этот вопрос уже даны ответы здесь:
Сброс буфера ввода ("читает лишнюю [пустую] строку") (2 ответа)
Закрыт 1 год назад.

Проблема такая: есть файл, где данные записаны сплошным столбиком. Сначала имя, потом возраст. Данный кусок кода должен это всё дело считать с файла и записать в массив, с чем он справляется, но не так, как было задумано автором. Непонятно откуда берётся строка без текста и с 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;
}

картинка с файлом

Answer 1

После считывания числа из файла

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/

READ ALSO
с++ вывод в виде таблицы

с++ вывод в виде таблицы

Никак не могу понять, почему таблица отображается некорректно

278
regex - как правильно убрать вложенные скобки?

regex - как правильно убрать вложенные скобки?

Есть строка, в которой встречаются такие вещи, как ((число)

279
Как скомилировать такой шаблон

Как скомилировать такой шаблон

Не пойму как правильно написать invoke чтоб компилировалось

248
Как отфильтровать значение переменной в цикле?

Как отфильтровать значение переменной в цикле?

Как отфильтровать по русскому алфавиту значения одной из нескольких переменной, которые выводятся через цикл foreach?

281