Блог пользователя Qary.

Автор Qary., 13 лет назад, По-русски

Есть функция freopen().

С помощью её мы можем успешно перехватывать поток для записи в файл.
Но если нужно после перенаправления снова писать в stdout-поток?
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Можно перенаправить stdout назад в консоль:

freopen("con","w",stdout);

"con" - тот самый, которым файлы называть нельзя, работает конечно только в винде, в других ОС будет что-то другое.

Еще можно для работы с файлами не перенаправлять stdout, а юзать собственную переменную типа FILE*.

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Не упоминай freopen в суе.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А не проще ли воспользоваться fstream, и просто писать 
ofstream fout("output.txt");
fout << something;
fout.close();
cout << something;
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
freopen("output", "w", stdout);
cout<<smth;
fclose(stdout);
cout<<smth;
Так?