使用 ifstream 打开文件时访问 C 中的错误消息可能具有挑战性。为了解决这个问题,让我们深入研究提取错误原因的技术。
检查文件打开错误的标准方法是:
ifstream f; f.open(fileName); if ( f.fail() ) { // I need error message here, like "File not found" etc. - // the reason of the failure }
在 C 中,当系统调用失败时,它会更新全局变量 errno。因此,您可以使用 errno 获取有关 ifstream 打开失败的更多详细信息:
ifstream f; f.open(fileName); if ( f.fail() ) { cerr << "Error: " << strerror(errno); }
请注意,errno 是一个全局变量。在多线程应用程序中,您需要小心。如果另一个系统调用在执行 f.open() 和使用 errno 之间触发错误,这可能会影响错误消息的准确性。
在 POSIX-兼容系统,errno 是线程本地的。这意味着在一个线程中设置 errno 不会影响其在任何其他线程中的值。
最初,e.what() 看起来更像是一个C - 用于检索错误信息的适当方法。但是,该函数返回一个特定于实现的字符串。在 G 的 libstdc 中,该字符串通常提供有关失败的很少有意义的信息。
以上是如何获取'ifstream”打开文件失败时的错误信息?的详细内容。更多信息请关注PHP中文网其他相关文章!