我不能在VS 2013中使用if(ifs == NULL)命令

Beq*_*dze 3 c++

编译此代码时:

std::ifstream ifs("somefile.txt");
if(ifs == NULL)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

没有运算符匹配这些操作数"=="

我在VS 2013的每个项目中都遇到了同样的错误,但我在VS 2010中没有遇到任何问题.

怎么解决这个?

Jos*_*eld 7

C++ 11 中std::basic_ios(从哪个std::basic_ifstream继承)的定义发生了变化.特别是,它的转换运算符已operator void*更改为explicit operator bool,因此您尝试执行的操作不再有效.尽管如此,检查流的状态绝不是常见的方法.相反,只是做if (!ifs).

C++标准现在变得比以往更快,MSVC习惯于将不同的标准混合在一起,直到它们完全支持最新标准.尽管委员会的目标是尽可能地减少这些代码,但是当事情发生变化时,你可以期待一些代码可以破解.