Извлечение из файла

Рейтинг: 0Ответов: 2Опубликовано: 13.03.2023
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";
}
}

В файл все записывается, но считать никак не получается, только если заранее заполнить файл, то все считается. Помогите ,пожалуйста, решить проблему

Ответы

▲ 1Принят
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";
}

По пунктам:

  1. Файл надо читать с начала f.seekg(0, ios_base::beg); Потому как Вы где закончили писать там и начинаете писать.
  2. Оператор >> считывает данные до первого разделителя (пробела, перевода строки и т.д.), поэтому без пробела эти числа будут склеены в одну строку. Следите за своими разделителями
▲ 2
f.seekg(0);      // Читать с начала файла!!

while (f >> ss)  // И никаких глупостей !f.eof()!!!!
{
    cout << ss<<"\n";
}