Можно ли ассоциировать cout с чем-либо, кроме монитора?

«cout — это объект потока вывода, который подключен к стандартному устройству вывода процесса, часто к терминалу, с которого запускается программа», — так говорит моя книга. Просто любопытно следующее:

Есть ли случай, когда cout сделан для подключения к любым другим устройствам вывода, например, к принтеру? Или это все равно, что cout относится к монитору и cin к клавиатуре все время.

1

Решение

cin является стандартным вводом, и хотя большинство систем получают ввод с клавиатуры, в этом нет необходимости. cout это стандартный вывод, большинство систем снова имеют стандартный вывод (стандартный вывод) для консоли. Но вы можете перенаправить его.

Например, в файл:

  std::ofstream file;
file.open ("test.txt"); // open file

std::streambuf *orig_out = std::cout.rdbuf();     // save cout
std::streambuf *buf = file.rdbuf();   // get file's streambuf
std::cout.rdbuf(buf);         // redirect cout to file
std::cout << "This is written to the file";
std::cout.rdbuf(orig_out);        // restore cout's original output

file.close(); // close file
6

Другие решения

Краткий ответ — «да». Cout это просто выходной поток. В Unix вы можете создать конвейер

command1 | command2

Стандартный вывод команды 1 переходит к стандартному вводу команды 2, т. Е. Не к монитору и клавиатуре.

stdout (и, следовательно, cout) также может быть перенаправлен:

command > some_file_or_device.
2

Да.

cin и cout — это iostreams, они являются стандартными, но они также нормальные, то есть вы можете закрыть stdin и stdout и снова открыть какое-то другое устройство как stdin или out.

1