cout可以与监视器以外的任何东西相关联吗?

时间:2012-10-09 06:18:02

标签: c++ cout

'cout是一个输出流对象,它附加到进程的标准输出设备,通常是运行程序的终端' - 我的书就是这样说的。只是对以下内容感到好奇:

是否有任何情况下cout被连接到任何其他输出设备,例如可能是打印机?或者就像cout指的是监视器和cin一直到键盘。

3 个答案:

答案 0 :(得分:6)

cin是标准输入,虽然大多数系统从键盘获取输入但是没有必要。 cout是标准输出,大多数系统再次将stdout(标准输出)设置为控制台。但你可以重定向它。

例如提交:

  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

答案 1 :(得分:2)

简短回答是“是”。 Cout只是一个输出流。在unix中,您可以创建管道

command1 | command2

命令1的stdout转到命令2的标准输入 - 即不是监视器和键盘。

stdout(以及cout)也可以重定向:

command > some_file_or_device.

答案 2 :(得分:1)

cin和cout是iostreams,它们是标准的,但它们也是正常的,即你可以关闭stdin和stdout并重新打开其他设备作为标准输出或输出。