编译此代码时:
std::ifstream ifs("somefile.txt");
if(ifs == NULL)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
没有运算符匹配这些操作数"=="
我在VS 2013的每个项目中都遇到了同样的错误,但我在VS 2010中没有遇到任何问题.
怎么解决这个?
C++ 11 中std::basic_ios(从哪个std::basic_ifstream继承)的定义发生了变化.特别是,它的转换运算符已operator void*更改为explicit operator bool,因此您尝试执行的操作不再有效.尽管如此,检查流的状态绝不是常见的方法.相反,只是做if (!ifs).
C++标准现在变得比以往更快,MSVC习惯于将不同的标准混合在一起,直到它们完全支持最新标准.尽管委员会的目标是尽可能地减少这些代码,但是当事情发生变化时,你可以期待一些代码可以破解.