首页 > 解决方案 > 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当和filebufobject 都可以用来调用时,为什么会发生这种情况open

标签: c++fileio

解决方案


fstream有自己的open方法(内部调用filebuf::open),只是决定不返回任何东西。如果文件无法打开,它将反映在“流状态”中,您可以在调用if (f.fail())后进行检查。open


推荐阅读