除了C ++之外还有输出流吗?

时间:2011-09-06 19:41:20

标签: c++ language-design cout

我的C ++书提供了关于cout的以下示例:

cout << "literals" << "to be" << "printed" ;

然后,它继续说:

  

语句以输出流的名称​​ cout

开头

这似乎意味着还有其他流。除了cout在C ++中还有其他输出流吗?它们是什么?

8 个答案:

答案 0 :(得分:7)

一些例子:

  • 来自std::cerr的{​​{1}} - 标准错误流
  • 来自<iostream>的{​​{1}} 类型 - 文件输入和文件输出流
  • 来自std::fstream的{​​{1}} 类型 - 字符串流

答案 1 :(得分:5)

C标准定义了3个常用文件描述符:

  • stdin(用户输入)
  • 标准输出(输出)
  • stderr(错误消息)

在C ++中,它们可以作为流使用。

  • 给std :: cin
  • 的std :: COUT
  • 的std :: CERR

cin是输入流。 cout和cerr都是输出流。

答案 2 :(得分:4)

首先,有写入标准错误的cerr。然后,您可以自己创建任何其他流,例如文件流,例如

ofstream mystream = ofstream("myfile.txt");

答案 3 :(得分:3)

默认情况下,标准错误也会cerr。您还可以打开新的输出流。

答案 4 :(得分:3)

首先,输出流只是一个类的对象,它提供一个以某种方式在某处输出数据的流 - 通常是c ++ IOstream库,例如, Ostream

  • std::cout是写入标准输出
  • 的信息流
  • std::cerr是写入标准错误频道
  • 的信息流

这通常是您在编写控制台应用程序时使用的内容。

然后有

  • 要写入文件的文件流
  • stringsreams来构建/修改字符串

请参阅IOstream库的此图表,可视化标准库中的所有c ++流。

答案 5 :(得分:2)

例如(来自http://www.cplusplus.com/reference/iostream/cout/)有这些流:

cerr     Standard output stream for errors (object )
clog     Standard output stream for logging (object )

但是你对“输出”流意味着什么? “控制台”输出流?输出“哪里”流?

来自同一网站(但不同的网页http://www.cplusplus.com/reference/iostream/cerr/

  

默认情况下,大多数系统都会将标准错误和日志记录输出定向到控制台,其中会显示文本消息,但通常可以重定向。

答案 6 :(得分:0)

printf是一种方法

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

printf ("Hello world");

答案 7 :(得分:0)

有cerr,但它和cout不一样。它专为输出错误而设计。

就标准流而言,有不同的方式来访问它们(例如,使用stdout / stderr就像fwrite的文件句柄一样),但是在一天结束时只有2个:

标准输出 - 专为标准输出而设计。程序状态,有用数据等。 stderr - 专为输出描述错误而设计。通常也用于调试数据。

有时实际输出将在stdout上完成,并在stderr上进行或调试相关输出。这样,用户可以将stdout传输到文件中并让stderr进入控制台。这使他们既可以捕获所需的信息,又可以看到进展等等。