我正在课堂上阅读我的文件,当我执行以下操作时,它会给我错误。请建议任何解决方案。
void write2file (string water)
{
ofstream write;
write.open ("D:\\Assignments\Water.txt", ios::out|ios::app);
{
write<<water<<endl;
}
write.close();
}
void DisplayW ()
{
ifstream read ("D:\\Assignments\Water.txt", ios::in|ios::app);
while (!read.eof) //ERROR at this point//
{
read >> Elements[i];
cout<<"Elements are: "<<Elements[i]<<endl;
}
}
答案 0 :(得分:2)
解决方案:
void DisplayW ()
{
ifstream read ("D:\\Assignments\\Water.txt", ios::in|ios::app);
// while (!read.eof) //ERROR at this point//
// better:
while(!read.eof()) // I think this is what you intended to write
{
read >> Elements[i];
cout<<"Elements are: "<<Elements[i]<<endl;
}
}
更好的解决方案:
i = 0;
while(read >> Elements[i++]);
说明:
read >> Elements[i];
执行:
从流中获取int并设置为元素
根据操作成功设置i / o状态
返回ostream&amp;
i++;
前进到下一个要阅读的元素;
while( [[returned ostream&]] )
将ostream转换为boolean;这将检查ostream状态(基于操作成功的i / o状态)和eof位,如果两者都可以,则返回true。
while计算结果为true并读入下一个索引。
在循环结束时,i
会计算您的元素。
基于您的代码的解决方案:
i = 0;
while(read >> Elements[i])
cout<<"Elements are: "<<Elements[i++]<<endl; // note i++ as
// the last operation
答案 1 :(得分:1)
你错过了函数调用语法。
使用
while (!read.eof())
而不是
while (!read.eof)
答案 2 :(得分:1)
.eof
是会员功能。你必须打电话。
while (!read.eof())
答案 3 :(得分:0)
错误告诉您正在尝试在成员函数上使用!
。您可能打算在调用成员函数的结果上使用它:
while (!read.eof())