首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ifstream打开失败时获取错误信息

如何在ifstream打开失败时获取错误信息
EN

Stack Overflow用户
提问于 2013-06-27 15:51:38
回答 3查看 130.8K关注 0票数 117
代码语言:javascript
复制
ifstream f;
f.open(fileName);

if ( f.fail() )
{
    // I need error message here, like "File not found" etc. -
    // the reason of the failure
}

如何以字符串的形式获取错误信息?

EN

Stack Overflow用户

发布于 2021-02-17 01:54:52

上面的std::system_error示例稍有不正确。std::system_category()将从系统的本地错误代码工具映射错误代码。对于*nix,这是errno。对于Win32,它是GetLastError()。即,在Windows上,上面的示例将打印出来

代码语言:javascript
复制
failed to open C:\path\to\forbidden: The data is invalid

因为EACCES是13,这是Win32错误代码ERROR_INVALID_DATA

要修复它,可以使用系统的本地错误代码工具,例如在Win32上

代码语言:javascript
复制
throw new std::system_error(GetLastError(), std::system_category(), "failed to open"+ filename);

或者使用errno和std::generic_category(),例如

代码语言:javascript
复制
throw new std::system_error(errno, std::generic_category(), "failed to open"+ filename);
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17337602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档