Ваша проблема в том, что вы пытаетесь прочитать из конца файла.
fstream
содержит указатель на текущую позицию в файле.После завершения записи в файл этот указатель указывает на конец, готовый к следующей команде записи.
Итак, когда вы пытаетесь читать из файла без перемещения указателя, вы пытаетесь прочитать изконец файла.
Вам нужно использовать seekg
, чтобы перейти к началу файла, чтобы прочитать то, что вы написали:
file << s;
cout << "\ndata file contains :";
file.seekg(0);
while(getline(file, line))
{
cout << "\n" << line;
}