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

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

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

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

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

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

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

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

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

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