看起来这应该很简单,但我在网络搜索中找不到它。
我有一个 open()
和 fail()
现在是真的。我想知道打开失败的原因,比如 errno
我会做 sys_errlist[errno]
。
原文由 WilliamKF 发布,翻译遵循 CC BY-SA 4.0 许可协议
看起来这应该很简单,但我在网络搜索中找不到它。
我有一个 open()
和 fail()
现在是真的。我想知道打开失败的原因,比如 errno
我会做 sys_errlist[errno]
。
原文由 WilliamKF 发布,翻译遵循 CC BY-SA 4.0 许可协议
来自 <cstring>
的 strerror 函数可能有用。这不一定是标准的或可移植的,但它适用于我在 Ubuntu 机器上使用 GCC:
#include <iostream>
using std::cout;
#include <fstream>
using std::ofstream;
#include <cstring>
using std::strerror;
#include <cerrno>
int main() {
ofstream fout("read-only.txt"); // file exists and is read-only
if( !fout ) {
cout << strerror(errno) << '\n'; // displays "Permission denied"
}
}
原文由 Nate Kohl 发布,翻译遵循 CC BY-SA 2.5 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.3k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答525 阅读✓ 已解决
1 回答3.3k 阅读
不幸的是,没有标准的方法可以准确地找出 open() 失败的原因。请注意, sys_errlist 不是标准 C++(或标准 C,我相信)。