【发布时间】:2011-08-04 04:41:56
【问题描述】:
我找不到与perror 等效的流。有这样的事吗?我喜欢我可以打电话的事实:
perror("Error");
它会填写errno 是什么。我可以对流进行此操作吗?
【问题讨论】:
-
@Erik:是的!...我之前看到过这个功能,但我无法再想出它。谢谢!
标签: c++
我找不到与perror 等效的流。有这样的事吗?我喜欢我可以打电话的事实:
perror("Error");
它会填写errno 是什么。我可以对流进行此操作吗?
【问题讨论】:
标签: c++
打印错误信息:
str << strerror(errno);
如果您谈论的是流错误状态 - 不,您无法获得自动有意义的错误消息。
【讨论】:
由于perror 写入stderr,C++ 中的任何等效项都必须完全相同。也就是说,将strerror(errno) 写入流是不够的。流本身应该(我说必须)是标准错误的流。
下面的代码sn-p/伪代码应该可以给你一个思路:
// depending on your compiler, this is all you need to include
#include <iostream>
#include <string.h>
#include <errno.h>
... somewhere in your code...
std::cerr << "Error: " << strerror(errno) << std::endl;
【讨论】: