c++ - I/O 中打开(文件)的行为
问题描述
在运行这些代码时:
std::fstream f;
if(f.open("n",std::fstream::in)) //ERROR
收到的错误是:
无法将 'f.std::basic_fstream::open(((const char*)"n"), ((std::ios_base::openmode)std::ios_base::in))' 从 'void' 转换为'布尔'</p>
但是在使用对象运行相同的代码时,filebuf
它运行良好:
std::filebuf f;
if(f.open("n",std::fstream::in)) //works fine
fstream
当和filebuf
object 都可以用来调用时,为什么会发生这种情况open
?
解决方案
fstream
有自己的open
方法(内部调用filebuf::open
),只是决定不返回任何东西。如果文件无法打开,它将反映在“流状态”中,您可以在调用if (f.fail())
后进行检查。open
推荐阅读
- r - 你能检查一下在这里制作双y轴时有什么问题吗?
- java - Java:将几个可完成的期货组合成一个链
- amazon-web-services - AWS SQS 消息并发处理
- javascript - onSubmit 不想设置状态
- fetch - 如何使用 fetch 从浏览器中的谷歌驱动器下载公开共享文件,而不使用谷歌身份验证
- r - 在R中改变w for循环
- sql - 从 DB2 Warehouse 中的列组织表中获取生成的密钥
- visual-studio - VisualStudio XAML 设计器告诉我我需要构建 19041,但它已经安装
- python-3.x - 将标签放在右侧书脊的左侧
- django - ruby 在 django 中设计加密密码解密