我收到以下错误:
null和非指针之间的比较(stream aka('basic_fstream')和Null)无效操作数到二进制表达式(stream aka('basic_fstream')和Null)和long')
以下是导致它的代码:
int main()
{
int arr[20][6];
fstream dataFile("input.txt", ios::in);
string input;
int i,I=0;
if (dataFile == NULL) // ERROR is on this line
{
cout << "can't open file" << endl;
return 0;
}
}
答案 0 :(得分:2)
据推测,您正在学习在C ++ 11之前编写的教程,并且您正在使用C ++ 11编译器。在C ++ 11之前,流类有一个operator void*
转换运算符,其中空指针表示错误状态。在C ++ 11中,这已更改为explicit operator bool
转换运算符,如果流处于错误状态,则返回false
。因此,您应将if
语句更改为:
if (!dataFile)
事实上,这一直是检查流状态的惯用方法(因为它也适用于C ++之前的版本)。