В вашем коде есть еще одна ошибка во время выполнения: вы не читаете всю строку с вызовом fileIn >> tempPrice;
. Следующий вызов getline()
будет читать до конца строки, поэтому вы получите пустую строку, когда ожидаете автора.
Затем вы отключаетесь на одну строку в текстовом файле и пытаетесь преобразовать заголовок в двойной. Это делает сигнал fstream ошибкой, и после этого у вас проблемы.
Бретт прав, вектор с push_back - лучшее решение здесь.
Бретт также правильно указал, что вы можете столкнуться с ошибками, если в вашем файле есть дополнительные строки. Вы можете исправить это, проверив, успешно ли вы прочитали файл:
if(fileIn >> tempPrice)
{
bookList[indexOfArray].setPrice(tempPrice);
}
else
{
break;
}
if(!getline(fileIn,tempStr))
{
break;
}