c/c++语言开发共享什么是“cerr”和“stderr”?

它们之间有什么区别?它们是如何使用的? 谁能指点我的例子?

具体来说,如何在两种情况下“写入”流,以及如何恢复和输出(即屏幕)已写入文本的文本?

另外,“屏幕”输出本身就是一个流吗? 也许我不太了解溪流。 我知道,这当然也可以保存到文件中。 所有这些都使用fprintf / fscanf等吗?

    cerr是C ++流, stderr是C文件句柄,都表示标准错误输出。

    您以与写入其他流和文件句柄相同的方式写入它们:

     cerr << "Urk!n"; fprintf (stderr, "Urk!n"); 

    我不确定你在这种情况下“恢复”是什么意思,输出转到标准错误就是这样。 该计划并不意味着在此之后关心它。 如果您的意思是如何保存以供日后使用,请参阅下一段。

    默认情况下,它们将转到您的终端,但输出可以重定向到其他地方,例如:

     run_my_prog 2>error.out 

    并且,是的,“屏幕”输出是一个流(或文件句柄),但这通常只是因为stdout/coutstderr/cerr默认连接到“屏幕”。 重定向会影响这一点,如下所示,不会将任何内容写入屏幕:

     run_my_prog >/dev/null 2>&1 

    (尽管直接写入/dev/tty但是很棘手的事情)。 该片段将重定向标准输出和标准错误以转到位桶。

    他们之间有什么区别

    stderr是一个FILE* ,是标准C库的一部分。 cerr是一个ostream ,是标准C ++库的一部分。

    另外,“屏幕”输出本身就是一个流吗?

    是的。 但实际上有两个流默认写入屏幕: stdout / cout用于正常输出, stderr / cerr用于错误消息。 这对重定向很有用:您可以将stdout重定向到文件,但仍然在屏幕上显示错误消息。

    需要了解更多c/c++开发分享什么是“cerr”和“stderr”?,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享什么是“cerr”和“stderr”?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980071.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐