gpt4 book ai didi

c++ - 什么是 "cerr"和 "stderr"?

转载 作者:IT老高 更新时间:2023-10-28 12:41:16 24 4
gpt4 key购买 nike

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

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

另外,“屏幕”输出本身就是一个流,对吧?也许我对流的理解不够好。当然,这也可以保存到文件中,我知道。所有这些都会使用 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)。该片段会将标准输出和标准错误重定向到位桶。

关于c++ - 什么是 "cerr"和 "stderr"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com