Извлечение из файла
fstream f;
string path="hh";
f.open(path, ios_base::in | ios_base::out | ios_base::app);
if (f.is_open() == 1)
cout << "+\n";
else
cout << "-\n";
string ss;
string b;
cin>>b;
f<<b<<" ";
f<<9<<" "<<88;
while (!f.eof()) {
ss = "";
f >> ss;
cout << ss<<"\n";
}
}
В файл все записывается, но считать никак не получается, только если заранее заполнить файл, то все считается. Помогите ,пожалуйста, решить проблему
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
f.seekg(0); // Читать с начала файла!!
while (f >> ss) // И никаких глупостей !f.eof()!!!!
{
cout << ss<<"\n";
}
Автор решения: Evgeniy Leonidov
→ Ссылка
fstream f;
string path = "hh";
f.open(path, ios_base::in | ios_base::out | ios_base::app);
if (f.is_open() == 1)
cout << "+\n";
else
cout << "-\n";
string ss;
string b;
cin >> b;
f << b << " ";
f << 9 << " " << 88 << " ";
f.seekg(0, ios_base::beg);
while (f >> ss) {
cout << ss << "\n";
}
По пунктам:
- Файл надо читать с начала f.seekg(0, ios_base::beg); Потому как Вы где закончили писать там и начинаете писать.
- Оператор >> считывает данные до первого разделителя (пробела, перевода строки и т.д.), поэтому без пробела эти числа будут склеены в одну строку. Следите за своими разделителями