В качестве части большего назначения мне нужно создать метод в классе, который может читать пять строк данных, а затем помещать эти данные в динамически созданный объект. Я не уверен, как идти о получении пяти строк данных отдельно в объект. Код должен помочь лучше объяснить, но он не работает по желанию. Если кто-то может определить мои ошибки, пожалуйста, дайте мне знать. Если вы можете мне помочь, мы будем очень благодарны. Также каждые пять строк читаются, я создаю новый объект, пока строки не останутся. Как я узнаю, останутся ли какие-либо строки? Еще раз спасибо за помощь, спасибо за ваше время.Помочь чтению каждые пять строк из текстового файла C++
inline void readFromFile(const string& fileName){
string title;
string category;
unsigned int runningTime;
unsigned int yearOfRelease;
double price;
ifstream myReadFile;
myReadFile.open(fileName);
while(myReadFile)
{
myReadFile>>title;
myReadFile >> category;
myReadFile >> runningTime;
myReadFile >> yearOfRelease;
myReadFile >> price;
v.push_back(new DVD(title,category,runningTime,yearOfRelease,price));
}
myReadFile.close();
for(unsigned int i = 0; i < v.size(); i++){
cout << *v.at(i) << endl;
}
}
Это то, что у меня есть до сих пор. Это правда, что это может быть проще, но мой опыт работы с C++ очень ограничен, поэтому я стараюсь держать его как можно более простым. Я сделал первые несколько изменений, но теперь файл не читается, и данные не отображаются. Извините меня за недостаток знаний в C++, но я стараюсь учиться. Какие изменения я предлагаю сделать в коде. – Delanoy
@ Delanoy: Как предложил Мартин, вы должны использовать 'getline' вместо' >> 'для строк (' title' и 'category' в вашем случае). Остальные поля - это числовые значения, и вы можете продолжать использовать '>>' для них. – casablanca
@casablanca: @ Даланой: Обычно я соглашаюсь с casablanca и предлагаю использовать оператора >>. Но в формате файла четко указано, что запись длится пять строк. Поэтому вы должны попытаться гарантировать, что вы прочтете ровно пять строк. Если вы используете оператор >>, конечные пробелы могут быть оставлены на последней строке. Это может быть проблемой при чтении следующего объекта. Таким образом, я бы прочитал пять строк в объектах. Затем я бы преобразовал каждую строку в соответствующий тип (возможно, с boost :: lexical_cast <> или вторым выбором std :: stringstream) –